/*快排 - 递归实现nlogn*//*原理: 快速排序(Quicksort)是对冒泡排序的一种改进. 快速排序由C. A. R. Hoare在1962年提出.它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列.*//*QuickSort_getKey:选取首元素.中间元素.尾元素这3个元素中间大小的元素,作为Key *
/*冒泡O(n^2)*//*原理: 比较相邻的元素.如果第一个比第二个大,就交换他们两个. 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对.在这一点,最后的元素应该会是最大的数. 针对所有的元素重复以上的步骤,除了最后一个. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较.*/void BubbleSort(int* data, size_t len){ size_t i=0,j=0; int iTmp=0; int i
合并排序算法在结构上是递归的,采用分治策略:就是将原有的问题划分为 n 个规模较小但结构与原问题相似的子问题,递归地解决这些子问题,然后合并其结果,就得到原问题的解. 合并排序的模式一般如下: 1.分解:将 n 个元素分解为各含 n/2 个元素的两个序列: 2.解决:用分治排序法对两个子序列递归地排序: 3.合并:合并两个已排好序的子序列得到排序结果. 在对子序列递归的过程中,当子序列元素数为1时,递归结束. 合并排序算法的时间复杂度为O(nlgn) void merge(int* a, int