[cpp] view plain copy

1.//快速排序
2.void quick_sort(int s[], int l, int r)
3.{

  1. if (l < r)
  2. {
  3. //Swap(s[l], s[(l + r) / 2]); //将中间的这个数和第一个数交换 参见注1
  4. int i = l, j = r, x = s[l];
  5. while (i < j)
  6. {
  7. while(i < j && s[j] >= x) // 从右向左找第一个小于x的数
  8. j--;
  9. if(i < j)
  10. s[i++] = s[j];
  11. while(i < j && s[i] < x) // 从左向右找第一个大于等于x的数
  12. i++;
  13. if(i < j)
  14. s[j--] = s[i];
  15. }
  16. s[i] = x;
  17. quick_sort(s, l, i - 1); // 递归调用
  18. quick_sort(s, i + 1, r);
  19. }
    24.}