25_quicksort.cvc 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. extern void printInt( int val);
  2. extern void printFloat( float val);
  3. extern int scanInt( );
  4. extern float scanFloat( );
  5. extern void printSpaces( int num);
  6. extern void printNewlines( int num);
  7. void printvector(int[m] a)
  8. {
  9. for(int i=0,m)
  10. {
  11. printInt(a[i]);
  12. printSpaces(3);
  13. }
  14. }
  15. void quicksort(int[N] list,int m,int n)
  16. {
  17. int key;
  18. int i;
  19. int j;
  20. int k;
  21. int temp;
  22. if( m < n)
  23. {
  24. k = (m+n)/2;
  25. //swap
  26. temp=list[m];
  27. list[m]=list[k];
  28. list[k]=temp;
  29. key = list[m];
  30. i = m+1;
  31. j = n;
  32. while(i <= j)
  33. {
  34. while((i <= n) && (list[i] <= key))
  35. {
  36. i=i+1;
  37. }
  38. while((j >= m) && (list[j] > key))
  39. {
  40. j=j-1;
  41. }
  42. if( i < j)
  43. {
  44. temp=list[i];
  45. list[i]=list[j];
  46. list[j]=temp;
  47. }
  48. }
  49. // swap two elements
  50. temp=list[m];
  51. list[m]=list[j];
  52. list[j]=temp;
  53. // recursively sort the lesser list
  54. quicksort(list,m,j-1);
  55. quicksort(list,j+1,n);
  56. }
  57. }
  58. export int main()
  59. {
  60. int[10] a = [2,10,5,4,9,7,8,6,1,2];
  61. quicksort(a,0,9);
  62. printvector(a);
  63. return 0;
  64. }