Advertisement
tdttvd

12.01

Feb 18th, 2022
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.64 KB | None | 0 0
  1. #include <stdio.h>
  2.  
  3. /*
  4. void merge(int a[], int left, int mid, int right)
  5. {
  6.     int n1 = mid - left + 1;
  7.     int n2 = right - mid;
  8.     int left_array[n1];
  9.     int right_array[n2];
  10.     for (int i = 0; i < n1; ++i) left_array[i] = a[left + i];
  11.     for (int i = 0; i < n2; ++i) right_array[i] = a[mid + 1 + i];
  12.  
  13.     int i = 0;
  14.     int j = 0;
  15.     int index = left;
  16.  
  17.     while ((i < n1) && (j < n2))
  18.     {
  19.         if (left_array[i] < right_array[j])
  20.         {
  21.             a[index] = left_array[i];
  22.             ++i;
  23.         }
  24.         else
  25.         {
  26.             a[index] = right_array[j];
  27.             ++j;
  28.         }
  29.         ++index;
  30.     }
  31.  
  32.     while (i < n1)
  33.     {
  34.         a[index] = left_array[i];
  35.         ++i;
  36.         ++index;
  37.     }
  38.  
  39.     while (j < n2)
  40.     {
  41.         a[index] = right_array[j];
  42.         ++j;
  43.         ++index;
  44.     }
  45. }
  46.  
  47. void merge_sort(int a[], int left, int right)
  48. {
  49.     if (left >= right) return;
  50.  
  51.     int mid = (left + right) / 2;
  52.     merge_sort(a, left, mid);
  53.     merge_sort(a, mid + 1, right);
  54.     merge(a, left, mid, right);
  55. }
  56.  */
  57.  
  58. void insertion_sort(int data[], int n)
  59. {
  60.     for (int i = 1; i < n; i++)
  61.     {
  62.         // Tìm vị trí phù hợp cho i
  63.         int j = i;
  64.         while (j > 0 && data[i] < data[j-1]) --j;
  65.  
  66.         // Đưa i về đúng vị trí
  67.         int tmp = data[i];
  68.         for (int k = i; k > j; k--)
  69.             data[k] = data[k-1];
  70.         data[j] = tmp;
  71.     }
  72. }
  73.  
  74. int main()
  75. {
  76.     int n;
  77.     scanf("%d", &n);
  78.     int a[n];
  79.     for (int i = 0; i < n; ++i) scanf("%d", &a[i]);
  80.     insertion_sort(a, n);
  81.     printf("%d %d %d", a[n - 1], a[n - 2], a[n - 3]);
  82. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement