看题就发蒙了,在题目给定的复杂度情况下,使用归并排序进行处理。 题中的链表处理,要学会断开链表,即一个链表断成两块,如何设置断点,分成两个链表的处理方法 1 /** 2 * Definition for singly-linked list. 3 * struct ListNode { 4 * in ...
分类:
编程语言 时间:
2020-03-02 11:07:57
阅读次数:
77
十大排序算法分类、特点和关系 (1)冒泡排序(交换排序的一种) (2)选择排序 (3)插入排序 (4)归并排序(采用了分治思想,额外的空间复杂度O(N),容易记错,最后合并大数组的时候需要开辟一个长度为N的数组) https://blog.csdn.net/u010452388/article/de ...
分类:
编程语言 时间:
2020-03-02 01:05:29
阅读次数:
83
题目: 给定一个长度为n的整数数列,请你计算数列中的逆序对的数量。 逆序对的定义如下:对于数列的第 i 个和第 j 个元素,如果满足 i < j 且 a[i] > a[j],则其为一个逆序对;否则不是。 输入格式 第一行包含整数n,表示数列的长度。 第二行包含 n 个整数,表示整个数列。 输出格式 ...
分类:
编程语言 时间:
2020-02-28 20:51:45
阅读次数:
65
总排序趟数与初始状态无关的有:(除了快速排序和优化的冒泡,其他都是) 算法复杂度与初始状态无关的有:堆排序、归并排序、选择排序、基数排序。 元素总比较次数与初始状态无关的有:选择排序、基数排序。 元素总移动次数与初始状态无关的有:归并排序、基数排序。 快速排序的最坏情形是数组为正序或逆序,如果pos ...
分类:
其他好文 时间:
2020-02-27 16:17:30
阅读次数:
69
//归并排序 class ArrayList { constructor () { this.array = [] } insert (data) { return this.array.push(data) } mergeSort () { this.array = this.merge_1(th ...
分类:
编程语言 时间:
2020-02-26 20:45:42
阅读次数:
79
#define _CRT_SECURE_NO_WARNINGS#include<iostream>using namespace std;void mergeSort(int a[], int s, int e, int temp[]) { if (s < e) { int m = s + (e - ...
分类:
编程语言 时间:
2020-02-25 20:27:18
阅读次数:
75
向量的基本实现和操作,含归并排序。 1 #include<iostream> 2 using namespace std; 3 typedef int ElemType; 4 #define DEFAULT_CAPACITY 10 5 6 class Vector{ 7 public: 8 int ...
分类:
编程语言 时间:
2020-02-25 14:36:06
阅读次数:
76
直接插入、选择排序、冒泡排序、快速排序、……归并排序、基数排序、希尔、堆排序、 直接插入: 思想是:1、将数据序列分成两部分,前一部分是有序的,后面一部分是无序的. 2、将无序变有序,首先从第一开始,然后第一,第二比较后排序,此时这两位就是有序的了;然后从无序的队列中取出第三位和第二位比较,然后他们 ...
分类:
编程语言 时间:
2020-02-23 16:32:03
阅读次数:
94
################## 归并排序 ####################### """ 归并算法逻辑 拆分 对整个序列进行拆分,左边一部分,右边一部分 然后对每一部分再次进行拆分,一直到拆分到只有一个元素,就到头了, 第1次拆分:54, 26, 93, 17, 77, 31, 44, ...
分类:
编程语言 时间:
2020-02-23 09:59:37
阅读次数:
87
排序 参考 "五分钟学算法" 复杂度比较 时间复杂度 O(n2) 各种简单的排序:直接插入、直接选择、冒泡 O(nlog2n) 快速排序、堆排序、归并排序 O(n1+$\lambda$),希尔排序 线性阶O(n)排序,基排序、桶、箱排序 稳定性 稳定排序:冒泡、插入、归并、基数排序 不稳定:选择、快 ...
分类:
编程语言 时间:
2020-02-22 13:40:19
阅读次数:
86