quicksort.cvc 1.2 KB

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