快排C语言的实现

来源:互联网 发布:ktv小姐怎么出台 知乎 编辑:程序博客网 时间:2024/05/21 17:39

主要参考的是http://blog.csdn.net/morewindows/article/details/6684558
代码如下

void quick_sort(int s[], int l, int r){    if(l < r)    {        //以l作为基准值        int i = l, j = r, x = s[l];        while(i < j)        {            //从后向前找,找到第一个比x小的            while(i < j)            {                if(s[j] < x)                {                    s[i] = s[j];                    break;                }                j--;            }            //从前向后找,找到第一个比x大的            while(i < j)            {                if(s[i] > x)                {                    s[j] = s[i];                    break;                }                i++;            }            //i保存了当前的坑的位置        }        s[i] = x;        quick_sort(s, l, i-1);        quick_sort(s, i+1, r);    }}

快排的主要思想就是一次确定一个数的位置,然后把问题规模变小,分别进行处理以达到每个区间有序。
那么如何确定一个数该在的位置呢?通过从后往前扫描,然后从前往后扫描,并重复这两个步骤实现。

原创粉丝点击