前言 承接上文 "基础排序算法—冒泡,插入,选择" ,相比之下,归并排序和快速排序更为高效,时间复杂度均为O(nlogn),相比简单排序的O(n^2)好了很多,下面介绍一下这两种算法的思路,实现和主要指标.主要思路来自 正文 归并排序 主要思路 在归并排序采用分冶的思想,使用递归实现.描述如下 1. ...
分类:
编程语言 时间:
2020-04-10 00:45:46
阅读次数:
77
稳定性的定义与意义: 通俗地讲就是能保证排序前两个相等的数其在序列的前后位置顺序和排序后它们两个的前后位置顺序相同。 如果是不稳定排序,则需要第二次排序,会增加系统开销。 选择排序: 举个例子,序列5 8 5 2 9,我们知道第一遍选择第1个元素5会和2交换,那么原序列中2个5的相对前后顺序就被破坏 ...
分类:
编程语言 时间:
2020-04-09 12:59:31
阅读次数:
136
1. 排序 1.1 冒泡排序 1.2 选择排序 1.3 插入排序 1.4 希尔排序 1.5 快速排序 1.6 归并排序 2. 搜索 1. 排序 排序算法(英语:Sorting algorithm)是一种能将一串数据依照特定顺序进行排列的一种算法。 排序算法的稳定性 稳定性:稳定排序算法会让原本有相等 ...
分类:
编程语言 时间:
2020-04-09 00:41:32
阅读次数:
85
给你一幅由 N × N 矩阵表示的图像,其中每个像素的大小为 4 字节。请你设计一种算法,将图像旋转 90 度。 不占用额外内存空间能否做到? 示例 1: 给定 matrix = [ [1,2,3], [4,5,6], [7,8,9]], 原地旋转输入矩阵,使其变为:[ [7,4,1], [8,5, ...
分类:
其他好文 时间:
2020-04-07 10:00:05
阅读次数:
176
链表的排序有很多方式,这里记录一下归并排序,关键点2个: 归并排序的过程和快慢指针法找中间结点,直接上代码。 class Solution { public: ListNode* sortList(ListNode* head) { if (!head || !head->next) return ...
分类:
编程语言 时间:
2020-04-06 17:33:04
阅读次数:
92
前言 文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。 作者:韩忠康 PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取http://t.cn/A6Zvjdun 算法 归并排序(merge-sort),典型的分治策 ...
分类:
编程语言 时间:
2020-04-06 15:32:27
阅读次数:
68
摸鱼了一个星期没更,现在补回来。上星期基本上就是邻接ddl(周一),套板子或者用现成sort修修补补过的, 今天是周六,是时候检验一下是不是真的完全会了,顺便解决一些当时没有想通的问题 先说归并排序 归并的思路,我觉得应该是很容易理解的,这里就不赘述,唯一难的就是把这个—再归并再排序—的模板自己写出 ...
分类:
编程语言 时间:
2020-04-05 11:29:35
阅读次数:
73
归并排序 基本思想 将待排序元素分成大小大致相同的 2 个子集合; 分别对 2 个子集合进行排序; 最终将排好序的子集合合并成为所要求的排好序的集合。 最常使用的归并排序方法是2 路归并排序。 复杂度和稳定性 时间复杂度:O(nlog2n) 空间复杂度:O(n) 稳定性:稳定 代码 ...
分类:
编程语言 时间:
2020-04-05 00:14:45
阅读次数:
90
1. Merge Sort / 归并排序 /* Divide and conquer * 将一个数组中的两个相邻有序区间合并成一个 * * 参数说明: * A -- 包含两个有序区间的数组 * lo -- 第1个有序区间的起始地址。 * mi -- 第1个有序区间的结束地址。也是第2个有序区间的起始 ...
分类:
编程语言 时间:
2020-04-04 23:03:58
阅读次数:
135
感悟:两小时,单项选择15,问答8,编程3,论述5(大学规划,为什么选这个岗位等等,也占分) 单选:计算机网络偏多,然后就是一些基本知识点了: 好喜欢考这东西啊,下面答案是6,因为末尾有个'\0',我做错了。。。。如果c[10]的话就是10 归并排序最坏情况(多分析一点最坏情况,因为最好情况都考烂了 ...
分类:
Web程序 时间:
2020-04-02 22:29:05
阅读次数:
354