【快速】排序, T(n) = O(nlgn),O(n^2) S(n) = O(lgn) --- 不稳定

原创 2013年12月05日 09:33:21
public static void quickSort(RS[] arrRS,int low,int high){
		
		// 保存【分割点】
		int partition;
		
		// 【段长】大于1
		if(low < high){
			
			// 一次分割,获得【分割点】 和  两个【子段】
			partition = quickPartition(arrRS,low,high);    
			
			//【递归】两个子段
			quickSort(arrRS, low, 		  partition-1);
			quickSort(arrRS, partition+1, high);
		}
	}

	//分割
	private static int quickPartition(RS[] arrRS, int left, int right) {
		
		// 拿起左边第一个,作【标尺】
		RS tempRS = arrRS[left];
		
		// 【段长】大于1,未结束
		while (left < right) {
			
			/*################  左     <<===   右  ##################*/
			while (left < right && arrRS[right].val>=tempRS.val) {
				right--;
			}
			if (left < right) {  // 若未结束,右边大的,放到左边 left 索引处,left 右移
				arrRS[left] = arrRS[right];
				left ++;
			}
			
			/*################  左      ===>>   右  ##################*/
			while (left < right && arrRS[left].val<tempRS.val) {
				left++;
			}
			if (left < right) {  // 若未结束,左边小的,放到右边 right 索引处,right 左移
				arrRS[right] = arrRS[left];
				right --;
			}
			
		}
		
		// 【标尺】归【分割点】
		arrRS[left] = tempRS;
		
		// 返回分割点
		return left;
	}

相关文章推荐

题目2.给出一个算法,它能用O(nlgn)的最坏情况运行时间,确定n个元素的任何排列中逆序对的数目

题目:         给出一个算法,它能用O(nlgn)的最坏情况运行时间,确定n个元素的任何排列中逆序对的数目。 前提:         1.不考虑超大数据等特殊情况 代码:      ...

算法题----称硬币: 2n(并不要求n是2的幂次方)个硬币,有两个硬币重量为m+1, m-1, 其余都是m 分治 O(lgn)找出假币

Description: 有2n个硬币和一个天平,其中有一个质量是m+1, 另一个硬币质量为m-1, 其余的硬币质量都是m 算法1:O(n)算法 将2n个硬币分成n组(每组2个)进行称量: 结果只...

在两个有序的数组中找第N个数,二分查找 O(lgm+lgn)级

 在两个有序的数组中找第N个数,O(lgm+lgn)级 分类: 算法2009-10-09 20:52 981人阅读 评论(3) 收藏 举报 问题描述: Give a...

hdu 1394 逆序对(nlgn+o(n) )

Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submissio...

如果令 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 分别等于

如果令 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 分别等于 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15...

O(n*lgn)时间复杂度的逆序对统计算法实现思想

逆序对定义:设A[1..n]是一个包含n个不同数的数组。如果在i A[j],则(i,j)就称为A中的一个逆序对(inversion)。 现给出一个算法,其可以用O(n*lgn)的最坏情况运行时间,确...

C​e​n​t​O​S​+​6​.​4​上​安​装​o​r​a​c​l​e​+​1​1​g​+​R​2​图​文​安​装​教​程

1、用unzip解压 Oracle 11g文件 unzip linux_x86_11gR1_database.zip (这个您也可以在Windows下面解压,不过您要加载过来,如果你的分区...

HDU--3884[Hinanai Tenshi’s peach garden] 枚举汇聚点O(N^2)

思路:  枚举汇聚点。每次贪心的取距离该汇聚点最近的点上的桃子。直到不能M   PS.一开始以为这么暴力的枚举过不了,结果62ms水过、、、ms还是最快的 = =! 原来是道水题、比赛的时候居然...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【快速】排序, T(n) = O(nlgn),O(n^2) S(n) = O(lgn) --- 不稳定
举报原因:
原因补充:

(最多只允许输入30个字)