排序总结-快速排序

代码参考自http://blog.csdn.net/morewindows/article/details/6684558

 int AdjustOrder(int[] s, int l, int r)
        {
            int i = l, j = r;
            int x = s[i];
            //从右向左,将小于x的放到左边
            while (i < j && x < s[j])
                j--;
            if (i < j)
            {
                s[i] = s[j];
                i++;
            }
            //从左向右,将大于x的放到右边
            while (i < j && x > s[i])
                i++;
            if (i < j)
            {
                s[j] = s[i];
                j--;
            }
            //当i=j,第一次循环结束
            s[i] = x;
            return i;
        }

        void QuickSort(int[] s, int l, int r)
        {
            if (l < r)
            {
                int i = AdjustOrder(s, l, r);
                QuickSort(s, l, i - 1);
                QuickSort(s, i + 1, r);
            }
        }

 

posted on 2014-03-31 21:47  清水伊人  阅读(163)  评论(0)    收藏  举报

导航