蛇形矩阵 题目链接: https://www.acwing.com/activity/content/problem/content/1898/1/ 思路 设计一个偏移量,4个方向,走不通了就改变方向 实现 链表的归并排序 迭代 递归 寻找矩阵的极小值 题目链接:https://www.acwing ...
分类:
编程语言 时间:
2020-05-07 15:13:20
阅读次数:
82
参考算法导论 #include <iostream> using namespace std; void merge(int a[],int p,int q,int r) { if(p==r) { return; } int n1=q-p+1; int n2=r-q; int L[n1+1]={0} ...
分类:
编程语言 时间:
2020-05-06 14:22:54
阅读次数:
61
求解逆序对问题,首先基础方法就是归并排序,高阶方法可以用树状数组。 首先知道什么叫逆序对:对于一个序列$a$,如果$ia[j]$,则$a[i]$和$a[j]$构成逆序对。归并排序在 合并 的时候可以将求解逆序对作为子问题来求解,如果$a[p1]a[p2]$,那$p1 mid$的所有的值都比$a[p2 ...
分类:
编程语言 时间:
2020-05-03 23:10:07
阅读次数:
118
本文介绍了堆排序的相关内容,包括其时间复杂度分析与正确性分析。 ...
分类:
编程语言 时间:
2020-05-03 16:39:15
阅读次数:
58
排序算法 一、算法核心思想分类 根据算法的核心思想,可以将十大排序算法分为两类: 1. 比较排序 常见的快速排序、归并排序、堆排序、冒泡排序等属于比较排序。 在排序的最终结果里,元素之间的次序依赖于它们之间的比较。每个数都必须和其他数进行比较,才能确定自己的位置。 2. 非比较排序 计数排序、基数排 ...
分类:
编程语言 时间:
2020-05-02 18:50:31
阅读次数:
93
public class NormalMergeSort { int[] arr; public NormalMergeSort(int[] arr){ this.arr = arr; } public void MergeSort(){ MergeSort(0,this.arr.length-1) ...
分类:
编程语言 时间:
2020-05-01 14:31:41
阅读次数:
60
import java.util.Arrays;/** * 归并排序(非递归实现) */public class MergeSort2 { public static void main(String[] args) { // 测试次数 int times = 50000; int maxNum = ...
分类:
编程语言 时间:
2020-05-01 13:09:11
阅读次数:
66
import java.util.Arrays;/** * 归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。 * 将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序 ...
分类:
编程语言 时间:
2020-05-01 12:52:14
阅读次数:
61
归并排序 归并排序算法的核心就是 “归并”,将两个有序的数列合并,形成更大的有序数组。 归并排序的原理 上面说了,归并排序的核心就是“归并”。如果排序一个数组,那么将数组从中间分成前后两部分,对前后两部分分别进行排序,然后再将排序好的合并在一起,那么这样整个数组就会成为更大的有序数组。例如下面示图: ...
分类:
编程语言 时间:
2020-04-30 19:04:57
阅读次数:
65
归并排序 归并排序是采用分治法的一个非常典型的应用。归并排序的思想就是先递归分解数组,再合并数组。 将数组分解最小之后,然后合并两个有序数组,基本思路是比较两个数组的最前面的数,谁小就先取谁,取了后相应的指针就往后移一位。然后再比较,直至一个数组为空,最后把另一个数组的剩余部分复制过来即可。 ...
分类:
编程语言 时间:
2020-04-29 00:46:58
阅读次数:
74