`
freshunter
  • 浏览: 15566 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

快速排序算法

阅读更多

    快速排序属于交换排序的一种,前面说的堆排序属于选择排序。快速排序是冒泡排序的改进版,基本思想是:通过一趟排序,将待排元素分割成两个部分,一部分的元素都比另一部分的元素大或者小,分别对这两个序列继续进行排序,可以得到一个有序序列。

    排序过程:1.随机选取一个key,把所有的元素跟key比较,根据大小分别移动到对应的序列(比如大的交换到key的后面,小的交换到key的前面)2.分别对被key分割的前后两个序列再进行1的分割操作直到序列不可再分。

快速排序java代码片段,sort(int start,int end,int[] ls)方法体内容:

        int i = start;
        int j = end;
        int index = start + r.nextInt(end - start + 1);
        int key = ls[index];
        swap(ls, index, i); 
        while(i < j)
        {
            while(ls[j] >= key && i < j)
            {
                j--;
            }
            if(i < j)
            {
                swap(ls, i, j);
            }
            while(ls[i] <= key && i < j)
            {
                i++;
            }
            if(i < j)
            {
                swap(ls, i, j);
            }
        }
        if(start < i-1)
        {
            sort(start, i-1, ls);
        }
        if(i+1 < end)
        {
            sort(i+1, end, ls);
        }

     快速排序在某种程度上可以认为是最佳排序算法,实现简单,效率不低,在O(nlogn)数据量级的随机序列排序中的平均性能是最好的。但最差效率会蜕变成冒泡排序。实际使用实情况而定

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics