- 博客(4)
- 收藏
- 关注
原创 括号匹配程序
如果左括号总能找到和它对应的右括号,那么我们就称为匹配。存在多余的右括号或者左括号都不匹配。#include#include#include#define CAPACITY 50typedef struct stack{ int top; char arr[CAPACITY];}stack;void initStack(stack *st){ st =
2015-02-03 19:37:56 697
原创 自己实现的高效的指数函数
传统的使用递归实现的指数函数是非常低效的,这种算法所用的乘法次数为logN,其中N为指数。#includeint iseven(int a){ if(a % 2 == 0) return 1; else return 0;}long int newpow(long int x, unsigned int N){ if(N ==
2015-02-03 19:34:12 752
原创 五种排序算法比较
目前已学过插入排序,希尔排序,堆排序,归并排序和快速排序,其中希尔排序增量序列的选取和快速排序中枢纽元的选取都会影响算法性能。本例子中希尔排序的增量序列采用的shell建议的,即初始增量为数字长度的一半,下一个增量为前一个增量的一半。(可能不是最好的增量序列)。快速排序枢纽元选用的是三数中值。还是测试200000个数排序时间,这里仅附上主程序:void main(){ srand(time
2015-02-02 18:52:37 620
原创 两种快速排序算法比较
1.选择将第一个元素作为枢纽元。如果输入是随机的,那么这是可以接受的,但如果输入是预排序的或者反排序的,那么这样的枢纽元就产生一个劣质的分割,因为所有的的元素不是被划入S1就是被划入S2。更有甚者,这种情况发生在所有的递归调用中。实际上,如果第一个元素作为枢纽元而且输入是预先排序的,那么快速排序花费的时间将是二次的。2.三数中值分割法。一组N个数的中值是第[N/2]个最大的数。枢纽元最好的选择
2015-02-02 18:33:19 545
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人