博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
快速排序
阅读量:3891 次
发布时间:2019-05-23

本文共 1583 字,大约阅读时间需要 5 分钟。

快速排序介绍:

快速排序(Quicksort)是对冒泡排序的一种改进。基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中-部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列

快速排序图解

在这里插入图片描述

在这里插入图片描述

代码实现

package sort;import java.util.Arrays;public class 快速排序 {
/** * @param args */ public static void main(String[] args) {
// TODO Auto-generated method stub int[] arr = {
-9,78,0,23,-567,70}; System.out.println(Arrays.toString(arr)); sort(arr,0,arr.length-1); System.out.println(Arrays.toString(arr)); } public static void sort(int[] arr,int left,int right) {
int left_index = left;//左下标 int right_index = right;//右下标 int temp = 0;//交换时使用 //中间的值 int pivot = arr[(left+right) / 2]; /** * while循环目的是 *让比pivot中间值 小的放到左边, *让比pivot中间值 大的放到右边, */ while(left_index < right_index){
//在pivot的左边一直找,找到大于等于pivot的值,然后退出while循环 while( arr[left_index] < pivot){
left_index++; } //在pivot的右边一直找,找到小于等于pivot的值,然后退出while循环 while( arr[right_index] > pivot){
right_index--; } //如果left_index >= right_index说明 //左边的值全部小于pivot值,右边全部是大于pivot的值 if(left_index >= right_index){
break; } //交换 temp = arr[left_index]; arr[left_index] = arr[right_index]; arr[right_index] = temp; //交换完成后,发现arr[left_index] == pivot if(arr[left_index] == pivot){
right_index--; } if(arr[right_index] == pivot){
left_index++; } } if(left_index ==right_index){
left_index++; right_index--; } //向左递归 if(left < right_index){
sort(arr, left, right_index); } if(right > left_index){
sort(arr, left_index, right); } }}

速度测试

在这里插入图片描述

在这里插入图片描述

经过测试800万数据仅需2s

转载地址:http://xothn.baihongyu.com/

你可能感兴趣的文章
Liferay配置文件Tag标签参考
查看>>
JavaLiferay研究之十六:FCKeditor如何插入服务器上的资源?
查看>>
Liferay研究之十二:对Liferay框架的几点分析总结 收藏
查看>>
Eclipse快捷键大全(转载)
查看>>
Google爬虫如何抓取JavaScript的?
查看>>
SAP HANA SQL/MDX及TCP/IP端口介绍
查看>>
SAP HANA使用XS和HTTP创建proxy
查看>>
SAP HANA SLT在表中隐藏字段并传入HANA的方法
查看>>
SAP HANA关于触发器的深入理解
查看>>
CSDN要求必须绑定手机号
查看>>
SAP HANA查看某一用户最后登录时间及无效连接次数
查看>>
讲讲BW/4 HANA和BW on HANA的区别
查看>>
SAP HANA CREATE SCHEMA
查看>>
SAP HANA CREATE TABLE
查看>>
SAP HANA CREATE USER
查看>>
SAP HANA index type
查看>>
SAP HANA SQL GROUP BY / ORDER BY / OVER / CASE
查看>>
gethostbyname和gethostbyaddr的用法
查看>>
IPv6和IPv4之间的通信机制和方法
查看>>
用syslog记录UNIX日志
查看>>