Advertisement
Guest User

Untitled

a guest
Nov 23rd, 2014
161
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.24 KB | None | 0 0
  1. #include <stdio.h>
  2. void swap(int i,int j, int *array)
  3. {
  4.         int t = array[i];
  5.         array[i] = array[j];
  6.         array[j] = t;
  7. }
  8.  
  9. int partition(int low, int high, int * array)
  10. {
  11.         int i,j,t;
  12.         i=j=low;
  13.     t=0;
  14.         while(j<high){
  15.         if(array[j] < array[high]){
  16.                 swap(i,j, array);
  17.                 i++;
  18.             }
  19.         j++;
  20.         }
  21.         swap(i,high,array);
  22.         return i;
  23. }
  24.  
  25. void SelectSort(int n, int *array)
  26. {
  27.     int j, k, i, t;
  28.     j=n-1; 
  29.     while(j>0){
  30.         k=j;
  31.         i=j - 1;
  32.         while(i>= 0){
  33.                 if(array[i]>array[k])
  34.                 k = i;
  35.                 i--;
  36.             }
  37.             swap(j,k,array);
  38.             j--;
  39.     }
  40. }
  41.  
  42. void QuickSortRec(int m, int low, int high, int *array)
  43. {
  44.     int f, q;
  45.     if((high-low)>=m){
  46.         f=partition(low, high, array);
  47.         QuickSortRec(m, low, f-1, array);
  48.         while(f+1<high){
  49.             q=partition(f+1, high, array);
  50.                 QuickSortRec(m, f+1, q-1, array);
  51.                     f=q;
  52.                 }      
  53.  
  54.         }
  55.     else
  56.         SelectSort(m, array);
  57. }  
  58.    
  59. int main()
  60. {
  61.     int m, n, i;
  62.         scanf("%d", &n);
  63.     scanf("%d", &m);
  64.         int array[n];
  65.         for(i = 0; i < n; i++){
  66.             scanf("%d", &array[i]);
  67.         }
  68.         QuickSortRec(m, 0, n-1, array);
  69.         for(i = 0; i < n; i++)
  70.         printf("%d ", array[i]);   
  71.         return 0;
  72. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement