归并排序 归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为2-路归并。 作为一种典型的分而治之思想的算法应用,归并排序的实现由两种方法: 自 ...
分类:
编程语言 时间:
2020-07-12 12:09:18
阅读次数:
65
第八章主要学习了排序方法。而排序方法中我们又主要学习内部排序。内部排序的过程是一个逐步扩大记录的有序序列长度的过程,可分为插入类、交换类、选择类、归并类和分配类。由于代码效率的评价指标包括时间效率(比较次数与移动次数)、空间效率及稳定性,所以接下来我要一一记录下这些排序类的步骤以及从以上三个方面判断 ...
分类:
其他好文 时间:
2020-07-12 00:38:14
阅读次数:
61
直接上图 主要就是要记住 二分查找,主要用于在有序的数组里面查找对应的元素,时间复杂度为 O(nlogn) 二叉树遍历,时间复杂度为 O(n) 有序的二维矩阵查找,时间复杂度为 O(n) 归并排序,时间复杂度为 O(nlogn) ...
分类:
编程语言 时间:
2020-07-11 23:00:49
阅读次数:
80
##一、归并排序 该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。 分割: 将数组从中点进行分割,分为左、右两个数组 递归分割左、右数组,直到数组长度小于2 归并: 如果需要合并,那么左右两数组已经有序了。 创建一个临时存储数组temp,比较两数组第一个元素,将较小的 ...
分类:
编程语言 时间:
2020-07-11 22:55:51
阅读次数:
61
归并排序: 先分治后归并。 edit play_arrow brightness_4 /* Java program for Merge Sort */ class MergeSort { // Merges two subarrays of arr[]. // First subarray is ...
分类:
编程语言 时间:
2020-07-10 23:51:51
阅读次数:
78
前言 在排序那一节里,讲到排序时,利用递推公式推导时间复杂度来求解归并排序、快速排序的时间复杂度,但有些情况,例如快速排序的平均时间复杂度,利用递推公式,会涉及很复杂的数据推导。今天学习一种特殊的树来分析递归算法的时间复杂度,那就是递归树。 递归树与时间复杂度 递归算法的思路是把大问题分成小问题来解 ...
分类:
编程语言 时间:
2020-07-10 10:10:47
阅读次数:
73
排序规则: 1、申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列 2、设定两个指针,最初位置分别为两个已经排序序列的起始位置 3、比较两个指针所指向的元素,选择相对小的元素放入合并空间,并移动指针到下一位置。 4、重复步骤3直到指针达到序列末尾 5、将另一序列剩下的所有元素直接复 ...
分类:
编程语言 时间:
2020-07-08 15:17:06
阅读次数:
61
待整理https://leetcode-cn.com/problems/kth-smallest-element-in-a-sorted-matrix/solution/you-xu-ju-zhen-zhong-di-kxiao-de-yuan-su-by-leetco/ ...
分类:
其他好文 时间:
2020-07-07 17:56:02
阅读次数:
62
题目 思路 很明显的求逆序对 可以用归并排序 可以用树状数组 树状数组记得加离散化! 代码 #include<bits/stdc++.h> using namespace std; const int maxn=1e5+10; long long n; int c[maxn]; void add(i ...
分类:
编程语言 时间:
2020-07-06 17:47:37
阅读次数:
43