- void quicksort(int num[],int start,int end)
- {
- int key=num[start];
- int prev = start;
- int last = end;
-
- //结束条件必不可少,否则将会进入死循环。
- if(prev >= last)
- {
- return;
- }
-
- while(prev < last)
- {
- while(prev < last)
- {
- if(num[last] < key)
- {
- num[prev]=num[last];
- ++prev;
- //当最后一个元素被写入到pre位置,循环应结束,pre后面的元素还没准备好
- break;
- //last此时还不能--,因为还没有将其覆盖。
- }
- --last;
- }
-
- while(prev < last)
- {
- if(num[prev] > key)
- {
- num[last]=num[prev];
- --last;
- break;
- }
- ++prev;
- }
- }
-
- num[last] = key;
-
- quicksort(num,start,last-1);
- quicksort(num,last+1,end);
- }
|