文档章节

快速排序

 麦金新一
发布于 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
朝阳
私信 提问

暂无文章

apache顶级项目(二) - B~C

apache顶级项目(二) - B~C https://www.apache.org/ Bahir Apache Bahir provides extensions to multiple distributed analytic platforms, extending their reach with a diversity of s......

晨猫
今天
1
0
day152-2018-11-19-英语流利阅读

“超级食物”竟然是营销噱头? Daniel 2018-11-19 1.今日导读 近几年来,超级食物 superfoods 开始逐渐走红。不难发现,越来越多的轻食餐厅也在不断推出以超级食物为主打食材的健康料理,像是...

飞鱼说编程
今天
7
0
SpringBoot源码:启动过程分析(二)

接着上篇继续分析 SpringBoot 的启动过程。 SpringBoot的版本为:2.1.0 release,最新版本。 一.时序图 一样的,我们先把时序图贴上来,方便理解: 二.源码分析 回顾一下,前面我们分析到了下...

Jacktanger
昨天
3
0
Apache防盗链配置,Directory访问控制,FilesMatch进行访问控制

防盗链配置 通过限制referer来实现防盗链的功能 配置前,使用curl -e 指定referer [root@test-a test-webroot]# curl -e "http://www.test.com/1.html" -x127.0.0.1:80 "www.test.com/1.jpg......

野雪球
昨天
5
0
RxJava threading

因为Rx针对异步系统设计,并且Rx也自然支持多线程,所以新的Rx开发人员有时会假设Rx默认是多线程的。在其他任何事情之前,重要的是澄清Rx默认是单线程的。 除非另有说明,否则每次调用onNex...

woshixin
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部