第一种:选择排序 第二种:冒泡排序、改进冒泡排序 第三种:插入排序 第四种:快速排序 第五种:归并排序 #include<iostream> #include<cstring> using namespace std; const int MAXN=1000; int a[MAXN]; int n; ...
分类:
编程语言 时间:
2020-01-29 23:39:35
阅读次数:
72
归并排序的归并这两个字和递归没有关系,归并是将两个有序的数组归并成一个更大的有序数组,但整个排序算法是有可能跟递归有关系的。因为归并排序算法可以按照递归方式去解决,也可以按照迭代方式去解决。 递归方式是自顶向下的归并排序,迭代方式是自底向上的归并排序。这两种归并排序虽然实现方式不同,但是都是调用了核 ...
分类:
编程语言 时间:
2020-01-27 15:43:47
阅读次数:
58
又是链表,怎么又是链表,暴风哭泣了 一看到链表的题我就下意识先去看答案了,先吐槽一会再回去继续写。 仔细看了下,答案中采用了 递归的归并排序方法: 1. Cut步骤: 在顶层将完整的ListNode分成两半, basecase 是 head is None or head.next is None ...
分类:
编程语言 时间:
2020-01-25 20:44:18
阅读次数:
102
首先明白逆序对的定义,逆序对就是数组中两个元素前大后小,我们就称这两个元素为一组逆序对。 接着看题目: 我们利用分治的思想,将区间一分为二,然后得到了逆序对的存在情况共三种: 1.两个元素都在左侧区间。 2.两个元素都在右侧区间。 3.两个元素一个在左,一个在右。 那么很明显我们分治的去解决这个问题 ...
分类:
编程语言 时间:
2020-01-23 22:49:55
阅读次数:
85
归并排序 个人认为归并排序和快速排序有相似之处,都是从大数组一步一步化为小数组再分步解决。 归并排序的思想其实很简单,总共分为两步,分与治。 分指的就是将一个大数组一步一步变小,总体化小再化小,如下图本是长度为8的数组分为两个长度为4的数组再一步一步分下去直到8个数字。 核心代码 int mid=( ...
分类:
编程语言 时间:
2020-01-23 20:01:35
阅读次数:
113
/*********************************************JS归并排序***************************************************/ /*之前学习了一下归并算法,现在想把他分享给大家*/ /* * 归并排序,分开数组,不断一 ...
分类:
编程语言 时间:
2020-01-23 09:19:26
阅读次数:
81
排序算法说明 0.1 排序的定义 对一序列对象根据某个关键字进行排序。 0.2 术语说明 稳定 :如果a原本在b前面,而a=b,排序之后a仍然在b的前面; 不稳定 :如果a原本在b的前面,而a=b,排序之后a可能会出现在b的后面; 内排序 :所有排序操作都在内存中完成; 外排序 :由于数据太大,因此 ...
分类:
编程语言 时间:
2020-01-22 13:11:28
阅读次数:
89
根据维基百科的定义: 插入排序是迭代算法,逐一获得输入数据,逐步产生有序的输出序列。每步迭代中,算法从输入序列中取出一元素,将之插入有序序列中正确的位置。如此迭代直到全部元素有序。 归并排序进行如下迭代操作:首先将原始序列看成 N 个只包含 1 个元素的有序子序列,然后每次迭代归并两个相邻的有序子序 ...
分类:
其他好文 时间:
2020-01-22 10:38:05
阅读次数:
60
转跳点 :🐏 1035 插入与归并 (25分) 根据维基百科的定义: 插入排序是迭代算法,逐一获得输入数据,逐步产生有序的输出序列。每步迭代中,算法从输入序列中取出一元素,将之插入有序序列中正确的位置。如此迭代直到全部元素有序。 归并排序进行如下迭代操作:首先将原始序列看成 N 个只包含 1 个元 ...
分类:
其他好文 时间:
2020-01-21 16:31:41
阅读次数:
104