快速排序

来源:互联网 发布:数据管理员面试题 编辑:程序博客网 时间:2024/05/11 16:04

快排原理:在数组中随机取一个数,然后一次比较左右两边的数,通过操作让左边的比它小,右边的数比它大。再分别在左右两个区间重复上述操作,依次迭代,直到区间为1,或者序号不再变化。


代码转自:http://m.blog.csdn.net/MoreWindows/article/details/6684558

//快速排序void quick_sort(int s[], int l, int r){    if (l < r)    {//Swap(s[l], s[(l + r) / 2]); //将中间的这个数和第一个数交换 参见注1        int i = l, j = r, x = s[l];        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);    }}


原创粉丝点击