【快速】排序, 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;
	}

[算法]Fibonacci数列O(n)和O(lgn)的解法

九度oj题目1387:斐波那契数列 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。斐波那契数列的定义如下: 输入: 输入可能包含多个测试样例,对于...
  • fanoluo
  • fanoluo
  • 2014年09月09日 22:24
  • 1078

今天才搞清楚排序算法的O(N*logN)是什么意思

以前光看了n多排序算法,知道仅通过比较的排序算法一共两种复杂度O(N2)或O(N*lgN),由于高数学的不好,之前一看到后者就放弃了思考,没有真正研究为什么会有个lgN,这两天工作不是很忙,看了一下基...
  • coollangzi
  • coollangzi
  • 2010年11月17日 20:26
  • 20603

理解O(log2N)和O(Nlog2N)

O(lgn)的解释是: 将一个数据集分成两半,然后将分开的每一半再分成两半,依此类推 O(nlgn)的解释是: 将一个数据集分成两半,然后将分开的每一半再分成两半,依此类推,在此过程中同时遍历每一...
  • sosesoA
  • sosesoA
  • 2016年10月10日 10:53
  • 4883

第四章 4.3 用代入法求解递归式

4.3-1 证明:T(n)=T(n-1)+n的解为O(n2n^2)。 c(n−1)2+n≤n2cn2−2cn+c+n≤n2cn2−(2c−1)n+1≤n2c(n-1)^2+n\le n^2 \\cn...
  • u012889441
  • u012889441
  • 2017年02月17日 15:20
  • 702

N o v e m b e r 2 8 t h W e d n e s d a y

I f   y o u   d e v e l o p   a n   a p p l i c a i o n   f o r   A p a c h e   p l a t f o r m ,   ...
  • Lu_ming
  • Lu_ming
  • 2007年11月30日 21:43
  • 47139

单调递增子序列总结(O(n^2)和O(nlogn)算法)

朴素的O(n^2)算法: 字符串: #include #include #include #include #include #include #include #include #i...
  • riba2534
  • riba2534
  • 2017年04月19日 09:54
  • 560

堆排序建堆复杂度为O(n)的证明

今天重温堆排序,在网上搜了好多博客文章,都是泛泛而谈。有的只讲了思路,有的直接贴上一份或几份代码。好一点的对复杂度进行了分析,但是讲到建堆复杂度,就一笔带过或者说请参考算法导论××页。我觉得求建堆复杂...
  • mtawaken
  • mtawaken
  • 2012年09月10日 23:40
  • 10476

N o v e m b e r 6 t h T u e s d a y

T h e r e   i s   a   j a v a   s o u r c e   a b o u t   e n c o d i n g   c h a r a c t e r s   s ...
  • Lu_ming
  • Lu_ming
  • 2007年11月30日 21:19
  • 3655

算法时间复杂度Θ(n2)与 O(n2)

原文地址:http://learn.akae.cn/media/ch11s03.html 解决同一个问题可以有很多种算法,比较评价算法的好坏,一个重要的标准就是算法的时间复杂度。现在研究一下插入...
  • Cottier
  • Cottier
  • 2011年03月21日 14:06
  • 6704

三种线性时间O(n)排序算法 - 计数-基数-桶 - C++实现

引言 注:由于没有启用任何公式编辑器,为表示方便:以下涉及时间复杂度表示时,其渐近符号用以下符号代替: 先来看一个定理:任意一个比较排序算法在最坏情况下,都需要做 $(nlgn)次的比较。其可...
  • heyabo
  • heyabo
  • 2013年05月13日 03:38
  • 2806
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【快速】排序, T(n) = O(nlgn),O(n^2) S(n) = O(lgn) --- 不稳定
举报原因:
原因补充:

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