Advertisement
skb50bd

CSE245_LAB02_SUBMISSION

Sep 23rd, 2016
210
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.20 KB | None | 0 0
  1. #include <iostream>
  2. #include <algorithm>
  3. #define SIZE 10
  4. using namespace std;
  5.  
  6. void swap (int &A, int &B) {
  7.     int temp;
  8.     temp = A;
  9.     A = B;
  10.     B = temp;
  11. }
  12.  
  13. bool comp (int i, int j) {
  14.     return (i < j) ? true : false;
  15. }
  16.  
  17. void insertionSort (int *A, long long N) {
  18.     for (int i = 1; i < N; i++)
  19.         for (int j = i - 1; j >= 0 && A[j] > A[j + 1]; j--)
  20.             swap (A[j], A[j + 1]);
  21. }
  22.  
  23. void bubbleSort (int *A, long long N) {
  24.     for (long long i = 0; i < N - 1; i++)
  25.         for (long long j = N - 1; j >= i + 1; j--)
  26.             if (A[j] < A[j - 1])
  27.                 swap (A[j], A[j - 1]);
  28. }
  29.  
  30. void selectionSort (int *A, long long N) {
  31.     for (int i = 0, k; i < N - 1; i++) {
  32.         k = i;
  33.         for (int j = i + 1; j < N; j++)
  34.             if (A[k] > A[j])
  35.                 k = j;
  36.         if (i != k)
  37.             swap (A[i], A[k]);
  38.     }
  39. }
  40.  
  41. int partition (int A[], int lo, int hi) {
  42.     int x = A[hi];
  43.     int i = lo - 1;
  44.     for (int j = lo; j < hi; j++)
  45.         if (A[j] <= x)
  46.             swap (A[++i], A[j]);
  47.  
  48.     swap (A[i + 1], A[hi]);
  49.     return i + 1;
  50. }
  51.  
  52. void quickSort (int A[], int lo, int hi) {
  53.     if (lo < hi) {
  54.         int mid = partition (A, lo, hi);
  55.         quickSort (A, lo, mid - 1);
  56.         quickSort (A, mid + 1, hi);
  57.     }
  58. }
  59.  
  60. void merge (int A[], int lo, int mid, int hi) {
  61.     int n1 = mid - lo + 1;
  62.     int n2 = hi - mid;
  63.     int L[n1];
  64.     int R[n2];
  65.  
  66.     for (int i = 0; i < n1; i++)
  67.         L[i] = A[lo + i];
  68.     for (int i = 0; i < n2; i++)
  69.         R[i] = A[mid + 1 + i];
  70.  
  71.     for (int i = 0, j = 0, k = lo; k < hi + 1; k++) {
  72.         if (i == n1)
  73.             A[k] = R[j++];
  74.         else if (j == n2)
  75.             A[k] = L[i++];
  76.         else if (L[i] <= R[j])
  77.             A[k] = L[i++];
  78.         else
  79.             A[k] = R[j++];
  80.     }
  81. }
  82.  
  83.  
  84. void mergeSort (int A[], int lo, int hi) {
  85.     if (lo < hi) {
  86.         int mid = (lo + hi) / 2;
  87.         mergeSort (A, lo, mid);
  88.         mergeSort (A, mid + 1, hi);
  89.         merge (A, lo, mid, hi);
  90.     }
  91. }
  92.  
  93.  
  94. void cpy (int A[], int B[]) {
  95.     for (int i = 0; i < SIZE; i++)
  96.         B[i] = A[i];
  97. }
  98.  
  99.  
  100. void display (int A[]) {
  101.     for (int i = 0; i < SIZE; i++)
  102.         cout << A[i] << " ";
  103.     cout << endl;
  104. }
  105.  
  106.  
  107.  
  108. int main() {
  109.     int A[SIZE] = {8, 9, 7, 6, 5, 4, 3, 2, 1, 3}, B[SIZE];
  110.  
  111.     cout << "QUICK SORT" << endl;
  112.     cpy (A, B);
  113.     display(B);
  114.     quickSort (B, 0, SIZE - 1);
  115.     display(B);
  116.     cout << endl << endl;
  117.  
  118.     cout << "MERGE SORT" << endl;
  119.     cpy (A, B);
  120.     display(B);
  121.     mergeSort (B, 0, SIZE - 1);
  122.     display(B);
  123.     cout << endl << endl;
  124.  
  125.     cout << "BUILT-IN SORT" << endl;
  126.     cpy (A, B);
  127.     display(B);
  128.     sort (B, B + SIZE, comp);
  129.     display(B);
  130.     cout << endl << endl;
  131.  
  132.     cout << "INSERTION SORT" << endl;
  133.     cpy (A, B);
  134.     display(B);
  135.     insertionSort (B, SIZE);
  136.     display(B);
  137.     cout << endl << endl;
  138.  
  139.     cout << "BUBBLE SORT" << endl;
  140.     cpy (A, B);
  141.     display(B);
  142.     bubbleSort (B, SIZE);
  143.     display(B);
  144.     cout << endl << endl;
  145.  
  146.     cout << "SELECTION SORT" << endl;
  147.     cpy (A, B);
  148.     display(B);
  149.     selectionSort (B, SIZE);
  150.     display(B);
  151.     cout << endl << endl;
  152.  
  153.     return 0;
  154. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement