文档章节

排序算法笔记:快速排序 QuickSort in java

CheN_exe
 CheN_exe
发布于 2014/01/04 13:40
字数 281
阅读 261
收藏 0
/**
 * 快速排序
 * 简述:
 * 		取array[high],将之前小于array[high]的数字置于array[high]之前,大于array[high]的置于array[high]之后,最后将array[high]放置于比它大的数字和比它小的数字之间.再利用递归重复之前的步骤至low < high为止.
 * 时间复杂度:
 * 		the best case: T(n)=T(n - 1)+Θ(n) = Θ(n^2)
 * 		the worst case: T(n)<=2T(n/2)+Θ(n)=Θ(nlgn)
 * 		average case: T(n)<=T(9n/10)+T(n/10)+cn=O(nlgn)
 * 空间复杂度:
 * 		O(logn)
 * 优点:
 * 		常见通用性较高的算法中,时间复杂度非常低的算法.推荐算法.
 * 缺点:
 * 		
 * 可改进:
 * 		
 * @author CheN
 *
 */
public class QuickSort {
	public static int[] asc(int[] array) {
		quickSort(array, 0 , array.length - 1 );
		return array;
	}
	
	private static void quickSort(int[] array, int low , int high ){
		if( low < high ){
			int middle = getMiddle( array , low , high );
			quickSort( array , low , middle - 1 );
			quickSort( array , middle + 1 , high );
		}
	}
	
	private static int getMiddle(int[] array, int low , int high ){
		int x = array[high];
		for( int j = low ; j < high ; j++ ){
			if( array[j] <= x ){
				int temp = array[low];
				array[low] = array[j];
				array[j] = temp;
				low++;
			}
		}
		int temp = array[low];
		array[low] = array[high];
		array[high] = temp;
		return low;
	}
	
}


若有错误或不妥之处,敬请谅解并指点。

© 著作权归作者所有

共有 人打赏支持
CheN_exe
粉丝 2
博文 40
码字总数 17135
作品 0
海淀
程序员
java 通配符的应用— java 排序算法

这几天无聊,又重新学起java的排序算法,为DualPivotQuickSort做准备。为了更好地适应各种情况,我们选择使用通用类型T和通配符的上下界来实现,同时这次谈的是对数组对象的排序。如果你对j...

天地一MADAO_
2014/03/02
0
0
JDK提供的排序算法是怎么实现的?

前几天整理的一套面试题,其中有一个问题就是Java的JDK中我们见到的Collections.sort()和Arrays.sort()这两个排序算法的实现方式是什么,很多小伙伴心里边默认的应该是快排,但是不全对或者理...

HOT_POT
07/29
0
0
java排序之快速排序、归并排序、基数排序

前两篇说了Java排序中的冒泡、选择、插入、希尔等排序算法,今天就探讨一下剩下的三种常用排序。 快速排序: 当要求时间最快时,就可以用快速排序算法。 选择第一个数为p,小于p的数放在左边...

野小疯
06/05
0
0
使用Java泛型实现快速排序(快排,Quicksort)算法

快排算法的特点 实用性强。 很多实际的项目中使用了快排算法。但通常对算法都进行了调整(tuning),比如Java.util.Arrays类中的sort函数就使用了快排算法,但使用了双参考值(Dual-Pivot Qu...

NealFeng
2013/10/18
0
0
BAT等大厂Android面试书单和知识点清单

java是Android开发的基础,在BAT的初面中,会涉及到比较多的java基础知识,所以比较重要,下面我介绍的书籍内容是由浅到深。 1.Thinking in java:这本书被称为Java的三大圣经之一,虽然书比...

android自学
07/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

vue+element-ui操作删除(单行和批量删除)

页面展示: <template><!-- 表格内容 --><el-table :data="packData" border style="width: 100%" ref="multipleTable" @selection-change="handleSelectionChange"><el-tab......

琴妹
10分钟前
0
0
基于vue(element ui) + ssm + shiro 的权限框架

zhcc 基于vue(element ui) + ssm + shiro 的权限框架 引言 心声 现在的Java世界,各种资源很丰富,不得不说,从分布式,服务化,orm,再到前端控制,权限等等玲琅满目,网上有句话说,语言框架...

DarrenHu_吴邪
17分钟前
1
1
数据库水平切分(MyCat分片)

范围分片 io.mycat.route.function.AutoPartitionByLong 自动范围分片 Function名称:rang-long(配置文件默认) 枚举分片 io.mycat.route.function.PartitionByFileMap 枚举分片 Funtion名称...

这很耳东先生
19分钟前
0
0
读《HeadFirst设计模式》笔记之外观模式

外观模式:提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。 举个栗子: 建了一个家庭影院,但是每次享受家庭影院时,你发现需要执行 将灯...

suyain
20分钟前
0
0
MongoDB分片配置

简单注解: mongos 路由进程, 应用程序接入mongos再查询到具体分片,监听端口默认27017 config server 路由表服务, 每一台都具有全部chunk的路由信息 shard为数据存储分片, 每一片都可以是...

LUIS1983
27分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部