Algerithm
文章平均质量分 76
BeaumontWang
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
常见排序算法(插入排序-曾经的笔记)
一、插入排序1.直接插入排序 思想:要将第i个记录插入到已排好序的有序子列(由前i-1个元素组成)中,先顺序查找到记录的插入位置,然后进行插入操作,从而得到一个新的、记录数增加1的有序表。插入位置的确定通过对有序子列中记录按关键码逐个比较得到的。 递归版本: template void InsertSort(_It first, _It last, _Ty& tmp, _Cmp& cmp){ //对 [first, last) 进行插入排序, tmp是辅助变量 if (las原创 2011-03-31 02:16:00 · 618 阅读 · 0 评论 -
常见排序算法(交换排序-曾经的笔记)
二、交换排序 交换排序的基本思想就是两两比较待排序的关键码,如果遇到逆序(与目标顺序正好相反) 时,就进行交换,直到所有对象都排好序为止。常见的交换排序有:起泡排序和快速排序。1.起泡排序 思想:从前往后,将第一记录与紧接其后的记录进行比较,若为逆序,则交换,然后比较第二个记录与第三个记录比较,逆序则交换,依此类推直到最后。然后再从第一个到倒数第二个记录,重复以上操作,直到只剩下第一个记录为此。总之,当递增排序时,可以这样处理:每次比较相邻的两个元素,大者向下移动,小者向上移动,每一趟起原创 2011-03-31 02:26:00 · 633 阅读 · 0 评论 -
常见排序算法(选择排序-曾经的笔记)
三、选择排序1.简单选择排序 思想:总是从其余部分选择出最大或最小的记录到有序子列中, 开始时有序子列的长度为0,随着每趟的选择长度每次增加1。 从程序中可看出,简单选择排序移动记录的次数较少,但关键码的比较次数依然是1─2n(n+1),所以时间复杂度仍为O(n2)。template void SelectSort(_It first, _It last, _Ty& tmp, _Cmp& cmp) {// 对 [first, last) 进行选择排序 _It sIt; f原创 2011-03-31 02:37:00 · 480 阅读 · 0 评论 -
常见排序算法(归并排序-曾经的笔记)
四、归并排序 思想:将两个或两个以上的有序表组合成一个新的有序表。 两路归并的迭代算法: 1个元素的表总是有序的。所以对n个元素的待排序列,每个元素可看成1个有序子表。对子表两两合并生成 个子表,所得子表除最后一个子表长度可能为1外,其余子表长度均为2。再进行两两合并,直到生成n个元素按关键码有序的表。 【效率分析】 需要一个与表等长的辅助元素数组空间,所以空间复杂度为O(n)。 对n个元素的表,将这n个元素看作叶结点,若将两两归并生成的原创 2011-03-31 02:47:00 · 536 阅读 · 0 评论
分享