[toc] 1. 介绍 1.1 排序算法分类 1. 内部排序: 数据记录在内存中进行排序 2. 外部排序: 因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存 1.2 关于时间复杂度 1. 平方阶($O(n^2)$)排序 各类简单排序: 直接插入、直接选择和冒泡排序 2. 线性对 ...
分类:
编程语言 时间:
2020-02-09 16:45:15
阅读次数:
95
1.归 ListNode* sortList(ListNode* head) { if (head == nullptr || head->next == nullptr) return head; // 1.将待排序序列分为两部分 ListNode* pre = nullptr, *slow = ...
分类:
编程语言 时间:
2020-02-08 00:36:48
阅读次数:
80
闲话 题解区一路翻下来居然没有归并树的题解?!那我来补一发吧。 对于像我这样的的juruo归并树当然是最好理解的。 分块在后面。 题解 在这道题之前,我们先来考虑这一个问题: 实现一种数据结构,支持静态查询区间$[l,r]$中有几个数$\le x$。 假设我们已经可以高效地处理这个问题了,那么我们就 ...
分类:
其他好文 时间:
2020-02-06 12:16:41
阅读次数:
56
在之前的文章当中,我们通过海盗分金币问题详细讲解了递归方法。 我们可以认为在递归的过程当中,我们通过函数自己调用自己,将大问题转化成了小问题,因此简化了编码以及建模。今天这篇文章呢,就正式和大家聊一聊将大问题简化成小问题的分治算法的经典使用场景——排序。 排序算法 排序算法有很多,很多博文都有总结, ...
分类:
编程语言 时间:
2020-02-06 11:03:49
阅读次数:
71
10种排序算法的Java实现 分类 基于比较的排序算法 冒泡排序,选择排序,插入排序,希尔排序,归并排序,快速排序,堆排序 非比较的排序算法 计数排序,桶排序,基数排序 稳定的排序算法 冒泡排序,插入排序,归并排序,计数排序,桶排序,计数排序 不稳定的排序算法 选择排序,希尔排序,快速排序,堆排序 ...
分类:
编程语言 时间:
2020-02-04 15:31:38
阅读次数:
69
一、题目说明 这个题目是23. Merge k Sorted Lists,归并k个有序列表生成一个列表。难度为Hard,实际上并不难,我一次提交就对了。 二、我的解答 就是k路归并,思路很简单,实现也不难。 不过,性能一般: 三、优化措施 上面的实现,之所以性能不足,在于一次归并一个队列,用的是插入 ...
分类:
其他好文 时间:
2020-02-04 10:38:51
阅读次数:
75
AcWing 787.归并排序 题目描述 给定你一个长度为n的整数数列。 请你使用归并排序对这个数列按照从小到大进行排序。 并将排好序的数列按顺序输出。 输入格式 输入共两行,第一行包含整数 n。 第二行包含 n 个整数(所有整数均在1~109109范围内),表示整个数列。 输出格式 输出共一行,包 ...
分类:
编程语言 时间:
2020-02-04 10:35:43
阅读次数:
76
题目描述 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007 传送门 归并排序的思想//去掉result就是纯归并 class Solution { ...
分类:
编程语言 时间:
2020-02-03 22:21:21
阅读次数:
92
快速排序 算法步骤: 在数列之中,选择一个元素作为”基准”(pivot),或者叫比较值。 数列中所有元素都和这个基准值进行比较,如果比基准值小就移到基准值的左边,如果比基准值大就移到基准值的右边 以基准值左右两边的子列作为新数列,不断重复第一步和第二步,直到所有子集只剩下一个元素为止。 算法分析: ...
分类:
Web程序 时间:
2020-02-03 16:07:17
阅读次数:
102
题目 在?O(n?log?n) 时间复杂度和常数级空间复杂度下,对链表进行排序。 示例 1: 输入: 4 2 1 3 输出: 1 2 3 4 示例 2: 输入: 1 5 3 4 0 输出: 1 0 3 4 5 来源:力扣(LeetCode) 链接:https://leetcode cn.com/pr ...
分类:
编程语言 时间:
2020-02-02 23:45:38
阅读次数:
106