4.快速排序.c 964 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define N 6
  4. int partition(int arr[], int low, int high){
  5. int key;
  6. key = arr[low];
  7. while(low<high){
  8. while(low <high && arr[high]>= key )
  9. high--;
  10. if(low<high)
  11. arr[low++] = arr[high];
  12. while( low<high && arr[low]<=key )
  13. low++;
  14. if(low<high)
  15. arr[high--] = arr[low];
  16. }
  17. arr[low] = key;
  18. return low;
  19. }
  20. void quick_sort(int arr[], int start, int end){
  21. int pos;
  22. if (start<end){
  23. pos = partition(arr, start, end);
  24. quick_sort(arr,start,pos-1);
  25. quick_sort(arr,pos+1,end);
  26. }
  27. return;
  28. }
  29. int main(void){
  30. int i;
  31. int arr[N]={32,12,7, 78, 23,45};
  32. printf("ÅÅÐòǰ \n");
  33. for(i=0;i<N;i++)
  34. printf("%d\t",arr[i]);
  35. quick_sort(arr,0,N-1);
  36. printf("\n ÅÅÐòºó \n");
  37. for(i=0; i<N; i++)
  38. printf("%d\t", arr[i]);
  39. printf ("\n");
  40. system("pause");
  41. return 0;
  42. }