简单实现了常见的几种内部排序算法,包括冒泡(Bubble),插入(Insert),快速排序(Quick Sort),堆排序(Heap Sort),归并(Merge),希尔排序(Shell Sort),并对这些算法的耗时在伪随机数上进行了简单的测试。
说明:
- 没有实现计数、基数排序等线性复杂度的算法;
- 各算法只是对算法思想的一次简单模拟,没有过多的优化;
- 各排序主程序接口参数均为整型数组及元素个数;
- 程序计时使用了glibc的gettimeofday(),因此。。。;
- 归并排序中,每次调用都申请和释放堆空间,因此比较耗时。可以采用原地归并、使用全局/静态的方法加以优化;
- 快速排序中,对待排子序列的长度进行的了判断,对短序列进行优先排序可以减小函数的递归深度(而不是次数);
- 希尔排序中,为了简洁,步长因子统一取做2.2(11/5)。
, Distant[s]为0;
,另有一个栈Stack和一个队列Queue,Stack与Queue初始为空。现对S中元素依次进行如下操作:
个这样的序列。但是,这里的01序列是建立在一些列的入栈出栈操作的基础上的,因此就会受到入栈、出栈操作的限制。这里,唯一的限制就是栈为空时,无法进行出栈操作。反映到这个01序列中就是,任意位置之前,0的个数都能比1的个数多。因为有了01序列的总数
也满足该方程其中k任意整数,方程的最小正整数解满足
,即对3,5,7的最小公倍数求余。