博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java算法-快速排序
阅读量:5734 次
发布时间:2019-06-18

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

hot3.png

一、原理

    选择一个关键值作为基准值。比基准值小的都在左边序列(一般是无序的),比基准值大的都在右边(一般是无序的)。一般选择序列的第一个元素。

二、描述

    一次循环:从后往前比较,用基准值和最后一个值比较,如果比基准值小的交换位置,如果没有继续比较下一个,直到找到第一个比基准值小的值才交换。找到这个值之后,又从前往后开始比较,如果有比基准值大的,交换位置,如果没有继续比较下一个,直到找到第一个比基准值大的值才交换。直到从前往后的比较索引>从后往前比较的索引,结束第一次循环,此时,对于基准值来说,左右两边就是有序的了。重复上述循环。

三、实例

public class maxtest {	public static void main(String[] args) {		//###################快速排序法start###################//		int[] state = {2,13,7,6,15,9,10,12,3,16,8,11,14,5,1};		int start = 0;		int end = state.length-1;		System.out.print("初始值:");		for (int i = 0; i < state.length; i++) {			System.out.print(state[i]+",");		}		System.out.println("");				sort(state,start,end);		//###################快速排序法end###################//	}		public static int partition(int []array,int lo,int hi){        //固定的切分方式        int key=array[lo];        while(lo
=key&&hi>lo){//从后半部分向前扫描 hi--; } array[lo]=array[hi]; while(array[lo]<=key&&hi>lo){ lo++; } array[hi]=array[lo]; } System.out.println(""); for (int i = 0; i < array.length; i++) { System.out.print(array[i]+","); } array[hi]=key; return hi; } public static void sort(int[] array,int lo ,int hi){ if(lo>=hi){ return ; } int index=partition(array,lo,hi); sort(array,lo,index-1); sort(array,index+1,hi); }}

结果如下:

初始值:2,13,7,6,15,9,10,12,3,16,8,11,14,5,1,1,13,7,6,15,9,10,12,3,16,8,11,14,5,13,1,2,5,6,3,9,10,12,9,16,8,11,14,15,13,1,2,3,6,6,7,10,12,9,16,8,11,14,15,13,1,2,3,5,6,7,8,9,9,16,12,11,14,15,13,1,2,3,5,6,7,8,9,10,16,12,11,14,15,13,1,2,3,5,6,7,8,9,10,13,12,11,14,15,13,1,2,3,5,6,7,8,9,10,11,12,11,14,15,16,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,

图列如下:

重复上述方式即可

转载于:https://my.oschina.net/Clarences/blog/1587098

你可能感兴趣的文章
vim编辑器如何添加或删除多行注释
查看>>
[LeetCode] Merge Intervals
查看>>
iOS开发-按钮的基本使用
查看>>
在QT和SDL搭建的框架中使用OPENGL在SDL窗口上进行绘图
查看>>
REST技术第三步 @BeanParam的使用
查看>>
SharePoint 读取 Site Columns 的数据并绑定到DropdownList
查看>>
Python中的对象行为与特殊方法(二)类型检查与抽象基类
查看>>
使用 axios 详解
查看>>
通信基站(dfs回溯,思维)
查看>>
nginx web加密访问
查看>>
iOS - Regex 正则表达式
查看>>
SYS_CONTEXT函数返回IP地址的一些误解
查看>>
第 68 章 Logical Volume Manager (LVM)
查看>>
膝盖中了一箭之康复篇-第八个月暨2月份目标总结
查看>>
IPA提交APPStore问题记录(一)
查看>>
有利于seo优化的网站地图不能取巧
查看>>
快照产品体验优化
查看>>
ASCII
查看>>
ibatis SqlMap not found
查看>>
Android SD卡创建文件和文件夹失败
查看>>