快速排序之前一直习惯于冒泡排序,无奈到了大二竟然算法和数据结构还是啥也不会。还是一步一步来吧。 主要代码123456789101112131415161718192021222324void quick_sort(int s[], int l, int r){ if (l < r) //加上这步,防止陷入死循环 { //Swap(s[l], s[(l + r) / 2]); //将中间的这个数和第一个数交换 参见注1 int i = l, j = r; int x = s[l]; //x作为基准 while (i < j) { while(i < j && s[j] >= x) // 从右向左找第一个小于x的数 j--; if(i < j) s[i++] = s[j]; while(i < j && s[i] < x) // 从左向右找第一个大于等于x的数 i++; if(i < j) s[j--] = s[i]; } s[i] = x; quick_sort(s, l, i - 1); // 递归调用 quick_sort(s, i + 1, r); }}