共 9 篇文章 |
|
堆排序算法的原理和实现堆排序算法的原理和实现起源 1991年计算机先驱奖获得者、斯坦福大学计算机科学系教授罗伯特·弗洛伊德(Robert W.Floyd)和威廉姆斯(J.Williams)在1964年共同发明了著名的堆排序算法( Heap Sort )“堆”定义 n个关键字序列Kl,K2,…,Kn称为(Heap),当且仅当该序列满足如下性质(简称为堆性质): (1... 阅3370 转22 评0 公众公开 12-10-05 21:41 |
阅85 转1 评0 公众公开 12-09-12 21:02 |
时间复杂度和空间复杂度。(3)渐进时间复杂度评价算法时间性能 主要用算法时间复杂度的数量级(即算法的渐近时间复杂度)评价一个算法的时间性能。在算法分析时,往往对算法的时间复杂度和渐近时间复杂度不予区分,而经常是将渐近时间复杂度 T(n)=O(f(n))简称为时间复杂度,其中的f(n)一般是算法中频度最大的语句频度。(5)最坏时间复杂度... 阅300 转1 评0 公众公开 12-09-03 19:28 |
/* Lpos = start of left half, Rpos = start of right half */void Merge( ElementType A[ ], ElementType TmpArray[ ], int Lpos, int Rpos, int RightEnd ){void MSort( ElementType A[ ], ElementType TmpArray[ ], int Left, int Right ){ElementType *TmpArray;/* Return median of Left, Center, and Right *//* Order these and hide t... 阅6 转自jijo 公众公开 12-08-16 15:43 |
算法的复杂度也是简单的,排序第一个需要1的复杂度,排序第二个需要2的复杂度,因此整个的复杂度就是。// 把i之前大于array[i]的数据向后移动 for (j = i - 1; j >= 0 &&array[j] >key; j--) { array[j + 1] = array[j]; } // 在合适位置安放当... 阅8 转自hugeant 公众公开 12-08-16 15:41 |
快速排序是对冒泡排序的一种改进。一躺快速排序的算法是:例如:待排序的数组A的值分别是:(初始关键数据X:=49)快速排序就是递归调用此过程——在以49为中点分割这个数据序列,分别对前面一部分和后面一部分进行类似的快速排序,从而完成全部数据序列的快速排序,最后把此数据序列变成一个有序的序列,根据这种思想对于上述数组A的快速排序... 阅7 转自fengxiasha 公众公开 12-08-16 15:40 |
快速排序是找出一个元素(理论上可以随便找一个)作为基准(pivot),然后对数组进行分区操作,使基准左边元素的值都不大于基准值,基准右边的元素值都不小于基准值,如此作为基准的元素调整到排序后的正确位置。对于左指针,如果左指针所指的元素的值小于或者等于基准值,那么指针往右移一位,如果大于基准值,则和基准值交换;int Partition(int A... 阅19 转自Gavin-book 公众公开 12-08-16 15:40 |
阅1630 转62 评1 公众公开 12-07-25 21:25 |