![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
BT_Dana
这个作者很懒,什么都没留下…
展开
-
排序(1) -- 冒泡排序
把几个排序算法先回顾, 学习, 整理一下吧... 开个张, 最常挂在嘴边的 -- 冒泡排序 冒泡排序: 冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。则第一趟结束,将最大的数放到了最后。在第二趟:仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到倒数第二个原创 2013-04-08 00:08:55 · 667 阅读 · 0 评论 -
排序(2) -- 选择排序
选择排序: O(n ^ 2) 选择排序(SelectSort)的基本思想是:第一趟, 从a[0]...a[n-1]中选择出最小的, 与a[0]进行交换; 第二趟, 从a[1]...a[n-1]中选择出最小的, 与a[1]交换; ...; 第(n-1)趟, 从a[n-2]...a[n-1]中选择出最小的, 与a[n-2]进行交换. 结束. 最后形成了一个升序排列. 选择排序是不稳原创 2013-04-08 00:45:32 · 705 阅读 · 0 评论 -
排序(3) -- (直接)插入排序
之所以标题加上"(直接)"的字眼, 是因为有许多时间复杂度为更低的算法都是对这个最原始/直接的插入排序算法优化演变出来的. 所以他们也可以算是插入排序. 当然, 这里我们要说的是最原始最直接的插入排序. 插入排序: O(n ^ 2) 插入排序(InsertSort)的基本思想是:每次从无序表中取出第一个元素,把它插入到有序表的合适位置,使有序表仍然有序。第一趟比原创 2013-04-09 01:25:48 · 621 阅读 · 0 评论 -
在0~N(不包括N)范围内随机生成一个长度为M(M <= N)且内容不重复的数组
PS: 代码涉及的随机函数和一些容器虽然是C++的, 但算法是通用的, 这些容器java等其它语言里也都能找到类似的存在. 1. 最朴素暴力的做法. void cal1() { int i = 0, j = 0, num = 0; int result[M]; result[0] = rand() % N; //第一个肯定不重复, 直接加进去 for (i = 1; i < M; i++) //获得剩下的(M-1)个随机数 { num = rand() % N; //生成0 ~ N之间的随原创 2013-10-09 15:38:31 · 4700 阅读 · 4 评论