文档章节

快速排序

 麦金新一
发布于 2016/03/18 10:05
字数 234
阅读 15
收藏 1

"快速排序"的思想很简单,整个排序过程只需要三步:

(1)在数据集之中,选择一个元素作为"基准"(pivot)。

(2)所有小于"基准"的元素,都移到"基准"的左边;所有大于"基准"的元素,都移到"基准"的右边。

(3)对"基准"左边和右边的两个子集,不断重复第一步和第二步,直到所有子集只剩下一个元素为止。
    
 public static void quicksort(int[] numbers, int start, int end) {
        if (start < end) {
            int pivot = numbers[(start+end)/2];// 选定的基准值(中间数值作为基准值)
            int temp; // 记录临时中间值
            int left = start, right = end;
            while (left <= right) {
                while (numbers[left] < pivot && left < end) {
                    left++;
                }
                while (numbers[right] > pivot && right > start) {
                    right--;
                }
                if (left <= right) {
                    temp = numbers[left];
                    numbers[left] = numbers[right];
                    numbers[right] = temp;
                    left++;
                    right--;
                }
            }
            if (start < right) {
                quicksort(numbers, start, right);
            }
            if (end > left) {
                quicksort(numbers, left, end);
            }
        }
    }   


public static void main(String[] args) {
        int[] numbers=new int[]{1,34,27,78,23,12,98,67,45,54,32,5,59,33,2,87,46};
        quickSort(numbers,0,numbers.length-1);
        for(int n:numbers){
            System.out.println(n);
        }    
    }

© 著作权归作者所有

共有 人打赏支持
粉丝 1
博文 8
码字总数 4887
作品 0
朝阳
私信 提问

暂无文章

ZStack--工作流引擎

在IaaS软件中的任务通常有很长的执行路径,一个错误可能发生在任意一个给定的步骤。为了保持系统的完整性,一个IaaS软件必须提供一套机制用于回滚先前的操作步骤。通过一个工作流引擎,ZStac...

ZStack社区版
11分钟前
0
0
Eclipse 安装lombok

1.首先打开lombok官网:https://projectlombok.org/ 2.选择下载 3.使用java -jar 运行jar包(一般情况下双击即可) 4.安装 5.重启IDE...

hengbao5
15分钟前
1
0
混合式开发框架资料汇总

1.quickhybrid 2.kerkee 3.Hybrid

IT追寻者
22分钟前
0
0
PyCharm入门教程——基本编辑程序

PyCharm最新版本下载 JetBrains PyCharm是一种Python IDE,其带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具。此外,该IDE提供了一些高级功能,以用于Django框架下的专业Web...

电池盒
25分钟前
0
0
分布式、高并发、多线程

分布式 分布式是为了解决单个物理服务器容量和性能瓶颈问题而采用的优化手段。包括但不限于:分布式文件系统,分布式缓存,分布式数据库,分布式计算。 分布式的实现有两种形式: 水平扩展:...

细节探索者
28分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部