编程珠玑
小咸鱼_
这个作者很懒,什么都没留下…
展开
-
快速排序算法的几种实现
1.一种简单的快速排序: 序列范围[l,u] 选取第一个元素为枢纽值,然后围绕t划分数组: m=a-1 for i =[a,b] if x[i]<t swap(x[++m],x[i]) 其中a=l+1,b=u。 循环终止后有: 此时交换x[l]和x[m]即可。 代码: void qsort1(int *x, int l, int u) { if (l原创 2017-05-16 17:32:14 · 964 阅读 · 0 评论 -
从0~n-1中随机k个有序元素
代码: void getKNum(int k, int n) { for (int i = 0; k; ++i) { if ((bigrand() % (n - i)) < k) { cout << i << " "; --k; } } cout << endl; } 其中bigrand()函数产生一个很大的随机数: int bigrand() { sr原创 2017-05-16 22:24:45 · 607 阅读 · 0 评论 -
洗牌算法
要求:给定N张扑克牌和一个随机函数,设计一个洗牌算法。 代码1: void shuffle1(int *x, int n) { int idx; srand(time(0)); for (int i = 0; i < n; ++i) { idx = rand() % (n - i) + i; swap(x[i], x[idx]); } }这个代码是“从头到尾”洗牌,即原创 2017-05-17 10:16:54 · 562 阅读 · 0 评论