上一页 1 ··· 7 8 9 10 11 12 下一页

内部排序->选择排序->堆排序

摘要: 文字描述 堆排序中,待排序数据同样可以用完全二叉树表示, 完全二叉树的所有非终端结点的值均不大于(或小于)其左、右孩子结点的值。由此,若序列{k1, k2, …, kn}是堆,则堆顶元素(或完全二叉树的根)必为序列中n个元素的最小值(或最大值)。 若在输出堆顶的最小值之后,使得剩余n-1个元素的序列 阅读全文
posted @ 2018-07-27 18:28 LiveWithACat 阅读(556) 评论(0) 推荐(0)

内部排序->选择排序->树形选择排序

摘要: 文字描述 树形选择排序又称锦标赛排序; 比如,在8个运动员中决出前3名至多需要11场比赛, 而不是7+6+5=18场比赛(它的前提是甲胜乙,乙胜丙,则甲必能胜丙) 首先对n个记录的关键字进行两两比较,然后在(n/2)个较小者之间再进行两两比较,直至选出最小关键字的记录为止,这个过程可用一颗有n个叶子 阅读全文
posted @ 2018-07-26 20:04 LiveWithACat 阅读(1035) 评论(0) 推荐(0)

内部排序->选择排序->简单选择排序

摘要: 文字描述 简单排序的基本思想是:每一趟在n-i+1(i=1,2,…,n)个记录中选取关键字最小的记录作为有序列表中的第i个记录。 示意图 略 算法分析 简单排序算法中,所需进行记录移动的操作次数较少,其最小值为0,最大值为3(n-1)。所需进行的关键字的比较次数相同,都为n(n-1)/2。因此总的时 阅读全文
posted @ 2018-07-25 18:40 LiveWithACat 阅读(437) 评论(0) 推荐(0)

内部排序->交换排序->快速排序

摘要: 文字描述 快速排序是对起泡排序的一种改进。它的基本思想是,通过一趟排序将待排序记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。 一趟快速排序描述:假设待排序的序列为{L.r[s], L.r[s+1], … , L.r[ 阅读全文
posted @ 2018-07-25 18:36 LiveWithACat 阅读(499) 评论(0) 推荐(0)

内部排序->交换排序->起泡排序

摘要: 文字描述 首先将第一个记录的关键字和第二个记录的关键字进行比较,若为逆序(L.r[1].key>L.r[2].key),则将两个记录交换位置,然后比较第二个记录和第三个记录的关键字。依次类推,直至第n-1个记录和第n个记录的关键字进行过比较为止。上述过程称为第一趟起泡排序,其结果使得关键字最大的记录 阅读全文
posted @ 2018-07-25 18:32 LiveWithACat 阅读(462) 评论(0) 推荐(0)

内部排序->插入排序->希尔排序

摘要: 文字描述 希尔排序又称缩小增量排序,也属于插入排序类,但在时间效率上较之前的插入排序有较大的改进。 从之前的直接插入排序的分析得知,时间复杂度为n*n, 有如下两个特点: (1)如果待排序记录本身就是“正序”时, 其时间复杂度可减少为n。 (2)当待排序记录数很小时,直接插入排序的效率也比较高; 希 阅读全文
posted @ 2018-07-25 18:27 LiveWithACat 阅读(539) 评论(0) 推荐(0)

内部排序->插入排序->其它插入排序->表插入排序

摘要: 文字描述 和之前的插入排序比,表插入排序可以保证排序过程中不移动记录;因此表插入排序所用的存储结构和之前的顺序存储不同,表插入排序采用静态链表类型作为待排记录序列的存储结构,设数组中下标0的分量为表头结点,并令表头结点记录的关键字取最大整数MAXINT。表插入排序的基本操作仍然是将一个记录插入到已经 阅读全文
posted @ 2018-07-21 19:03 LiveWithACat 阅读(585) 评论(0) 推荐(0)

内部排序->插入排序->其它插入排序->2-路插入排序

摘要: 文字描述 在折半插入排序的基础上进行改进, 另设一个和待排序序列L相同的数组D, 首先将L[1]赋值给D[0], 数组D中数据是已经排好序的, first指向最小值下标,final指向最大值下标。初始时,first和final值都为0。之后将L的第二个元素开始依次和D[0]比较,大于D[0]的插入到 阅读全文
posted @ 2018-07-21 15:57 LiveWithACat 阅读(443) 评论(0) 推荐(0)

内部排序->插入排序->其它插入排序->折半插入排序

摘要: 文字描述 和直接插入排序比较,只是把“查找”操作利用“折半查找”来实现,由此进行的插入排序叫做折半插入排序。 示意图 略 算法分析 和直接插入排序比,减少了比较次数,但是移动次数没有变,所以折半插入排序算法的时间复杂度仍然是n*n, 辅助空间为1,是稳定的排序方法。 代码实现 1 #include 阅读全文
posted @ 2018-07-21 14:01 LiveWithACat 阅读(406) 评论(0) 推荐(0)

内部排序->插入排序->直接插入排序

摘要: 文字描述: 将一个记录插入到已排好序的有序表中,从而得到一个新的、记录数增1的有序表 示意图: 算法分析: 时间复杂度为n*n,辅助存储为1,是稳定的排序方法。 代码实现: 1 #include <stdio.h> 2 #include <stdlib.h> 3 4 #define EQ(a, b) 阅读全文
posted @ 2018-07-21 13:52 LiveWithACat 阅读(476) 评论(0) 推荐(0)
上一页 1 ··· 7 8 9 10 11 12 下一页