![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
文章平均质量分 72
胡思乱想的
这个作者很懒,什么都没留下…
展开
-
排序算法(一):直接插入排序
ps:虽然是转载的,但是代码绝对自己重新写过的。基本思想:将一个记录插入到已排序好的有序表中,从而得到一个新,记录数增1的有序表。即:先将序列的第1个记录看成是一个有序的子序列,然后从第2个记录逐个进行插入,直至整个序列有序为止。算法的实现:#include using namespace std;void Print(int a[], int n)转载 2015-11-05 21:02:51 · 192 阅读 · 0 评论 -
排序算法(三):简单选择排序
基本思想:在要排序的一组数中,选出最小(或者最大)的一个数与第1个位置的数交换;然后在剩下的数当中再找最小(或者最大)的与第2个位置的数交换,依次类推,直到第n-1个元素(倒数第二个数)和第n个元素(最后一个数)比较为止。简单选择排序的示例: 操作方法:第一趟,从n 个记录中找出关键码最小的记录与第一个记录交换;第二趟,从第二个记录开始的n-1转载 2015-11-07 10:59:39 · 381 阅读 · 0 评论 -
排序算法(五):冒泡排序
ps:虽然是转载的,但是代码是自己重新写过的。基本思想:在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。冒泡排序的示例: 算法的实现:#include using namespace std;转载 2015-11-07 21:52:23 · 206 阅读 · 0 评论 -
排序算法(四):堆排序
ps:虽然是转载的,但是代码是自己重新写过的。堆排序是一种树形选择排序,是对直接选择排序的有效改进。基本思想:堆的定义如下:具有n个元素的序列(k1,k2,...,kn),当且仅当满足时称之为堆。由堆的定义可以看出,堆顶元素(即第一个元素)必为最小项(小顶堆)。若以一维数组存储一个堆,则堆对应一棵完全二叉树,且所有非叶结点的值均不大于(或不小于)其子女的值,转载 2015-11-07 15:44:07 · 1913 阅读 · 0 评论 -
排序算法(二):希尔排序
希尔排序是1959 年由D.L.Shell 提出来的,相对直接排序有较大的改进。希尔排序又叫缩小增量排序转载 2015-11-06 22:26:46 · 453 阅读 · 0 评论 -
排序算法(六):快速排序
ps:虽然是转载的,但是代码是自己重新写过的。基本思想:1)选择一个基准元素,通常选择第一个元素或者最后一个元素,2)通过一趟排序讲待排序的记录分割成独立的两部分,其中一部分记录的元素值均比基准元素值小。另一部分记录的 元素值比基准值大。3)此时基准元素在其排好序后的正确位置4)然后分别对这两部分记录用同样的方法继续进行排序,直到整个序列有序。快转载 2015-11-09 18:00:56 · 277 阅读 · 0 评论 -
排序算法(八):小结
各种排序的稳定性,时间复杂度和空间复杂度总结: 我们比较时间复杂度函数的情况: 时间复杂度函数O(n)的增长情况所以对n较大的排序记录。一般的选择都是时间复杂度为O(nlog2n)的排序方法。时间复杂度来说:(1)平方阶(O(n2))排序 各转载 2015-11-10 00:19:05 · 239 阅读 · 0 评论 -
排序算法(七):归并排序
ps:虽然是转载的,但是代码是自己重新写过的。基本思想:归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。归并排序示例: 合并方法:设r[i…n]由两个有序子表r[i…m]和r[m+1…n]组成,两个子表长度分别为转载 2015-11-10 00:08:32 · 249 阅读 · 0 评论