Advertisement
Sitisom

Sorts

Oct 28th, 2018
182
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.04 KB | None | 0 0
  1. #include<iostream>
  2. using namespace std;
  3.  
  4. void quickSort(int arr[], int left, int right) {
  5.     int i = left, j = right;
  6.     int pivot = arr[(left + right) / 2];
  7.  
  8.     while (i <= j) {
  9.         while (arr[i] < pivot) i++;
  10.         while (arr[j] > pivot) j--;
  11.         if (i <= j) {
  12.             swap(arr[i], arr[j]);
  13.             i++;
  14.             j--;
  15.         }
  16.     }
  17.     if (left < j)
  18.         quickSort(arr, left, j);
  19.     if (i < right)
  20.         quickSort(arr, i, right);
  21. }
  22.  
  23. void bubbleSort(int arr[], int l) {
  24.     for (int i = 0; i < l; i++)
  25.         for (int j = (l - 1); j >= (i + 1); j--) {
  26.             if (arr[j] < arr[j - 1])
  27.                 swap(arr[j], arr[j - 1]);
  28.         }
  29. }
  30.  
  31. void selectionSort(int arr[], int l) {
  32.     int min;
  33.     for (int i = 0; i < l-1; i++) {
  34.         min = i;
  35.         for (int j = i+1; j < l; k++)
  36.             if (arr[min] > arr[j])
  37.                 min = j;
  38.         swap(arr[i], arr[min]);
  39.     }
  40. }
  41.  
  42. void insertionSort(int arr[], int l) {
  43.     int k = 0, i = 0;
  44.     for (int j = 1; j < l; j++) {
  45.         k = arr[j];
  46.         i = j - 1;
  47.         while (i >= 0 && arr[i] > k) {
  48.             arr[i + 1] = arr[i];
  49.             i -= 1;
  50.             arr[i + 1] = k;
  51.         }
  52.     }
  53. }
  54.  
  55. void merge(int *a, int n)
  56. {
  57.     int mid = n / 2;
  58.     if (n % 2 == 1)
  59.         mid++;
  60.     int h = 1;
  61.     int *c = (int*)malloc(n * sizeof(int));
  62.     int step;
  63.     while (h < n)
  64.     {
  65.         step = h;
  66.         int i = 0;
  67.         int j = mid;
  68.         int k = 0;  
  69.         while (step <= mid)
  70.         {
  71.             while ((i < step) && (j < n) && (j < (mid + step)))
  72.             {
  73.                 if (a[i] < a[j])
  74.                 {
  75.                     c[k] = a[i];
  76.                     i++; k++;
  77.                 }
  78.                 else {
  79.                     c[k] = a[j];
  80.                     j++; k++;
  81.                 }
  82.             }
  83.             while (i < step)
  84.             {
  85.                 c[k] = a[i];
  86.                 i++; k++;
  87.             }
  88.             while ((j < (mid + step)) && (j<n))
  89.             {
  90.                 c[k] = a[j];
  91.                 j++; k++;
  92.             }
  93.             step = step + h;
  94.         }
  95.         h = h * 2;
  96.         for (i = 0; i<n; i++)
  97.             a[i] = c[i];
  98.     }
  99. }
  100. void calculateSort(int*a, int n) {
  101.     int*b = new int[n],k,i,j;
  102.     for (i = 0; i < n; i++) {
  103.         k = 0;
  104.         for (j = 0; j < n; j++)
  105.             if (a[i] > a[j])
  106.                 k++;
  107.         b[k] = a[i];
  108.     }
  109.     for (i = 0; i < n; i++)
  110.         a[i] = b[i];
  111. }
  112.  
  113. int main()
  114. {
  115.     int a[5] = { 1,2,5,4,3 };
  116.     insertionSort(a, 5);
  117.     for (int i = 0; i < 5; i++) cout << a[i] << ' ';
  118.     system("pause");
  119.     return 0;
  120. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement