摘要:
为什么插入排序要优于冒泡? 插入排序在于向已排序序列中插入新元素,主要的动作是移动元素,涉及1次赋值,即data[j] = data[j-1]; 而冒泡排序在于相邻元素交换位置,涉及3条赋值,即iTmp = data[j+1];data[j+1] = data[j];data[j] = iTmp; 阅读全文
摘要:
对冒泡、快排、堆排这3个算法做了验证,结果分析如下: 一、结果分析 时间消耗:快排 < 堆排 < 冒泡。 空间消耗:冒泡O(1) = 堆排O(1) < 快排O(logn)~O(n) 。 应用推荐: 1、速度最快、且允许占用少量的空间:选快排。 2、速度快且空间最小(O(1)):选堆排。 3、要求相同 阅读全文
摘要:
/*堆排nlog(n)*//*堆排复杂度分析1、建堆((n*log(n))/2) 循环n/2次,每次调用HeapAdjust函数 HeapAdjust内部循环log(n)2、调整堆(((n-1)log(n))/2) 循环n-1次,每次调用HeapAdjust函数 HeapAdjust内部循环log( 阅读全文
摘要:
/*快排 - 递归实现nlogn*//*原理: 快速排序(Quicksort)是对冒泡排序的一种改进。 快速排序由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数 阅读全文
摘要:
/*冒泡O(n^2)*//*原理: 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 针对所有的元素重复以上的步骤,除了最后一个。 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需 阅读全文