快速排序

1.先从数列中取出一个数作为基准数。

2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。

3.再对左右区间重复第二步,直到各区间只有一个数。

时间复杂度:O(N*logN);

代码:

void quick_sort(int s[], int l, int r)

{

    if (l < r)

    {

        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;  // 剩余的位置即为x

        quick_sort(s, l, i - 1); // 递归调用

        quick_sort(s, i + 1, r);

    }

}

上一篇:快速排序


下一篇:AJAX-Quick Guide