
排序算法
文章平均质量分 51
基本的排序算法
Zyy~
我们曾如此渴望命运的波澜,到最后才发现:人生最曼妙的风景,竟是内心的淡定与从容……我们曾如此期盼外界的认可,到最后才知道:世界是自己的,与他人毫无关系!
展开
-
《基数排序》基数排序详解
一、基数排序思想 相比其它排序,主要是利用比较和交换,而基数排序则是利用分配和收集两种基本操作。基数 排序是一种按记录关键字的各位值逐步进行排序的方法。此种排序一般适用于记录的关键字为整数类型的情况。所有对于字符串和文字排序不适合。(O(d(n+k))* : n个d位数,取值范围[0,k],对于每一位,耗时O(n+k), 稳定排序)实现:将所有待比较数值(自然数)统一为同样的数位长度,数位较短的数前面补零。然后,从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后, 数列就变转载 2021-09-11 16:23:30 · 2145 阅读 · 0 评论 -
《堆排序》堆排序详解
堆排序堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为O(nlogn),它也是不稳定排序。堆堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。如下图://大顶堆:arr[i] >= arr[2i+1] && arr[i] >= arr[2i+2] //小顶堆:arr[i] <= arr[2i+1] &&转载 2021-09-10 13:49:17 · 4630 阅读 · 0 评论 -
《leetcode》剑指 Offer 51. 数组中的逆序对《归并排序》
剑指 Offer 51. 数组中的逆序对难度困难427在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。示例 1:输入: [7,5,6,4]输出: 5限制:0 <= 数组长度 <= 50000解析: 归并排序, 如果mid之后的数排到前面了,那么re+=这个数原来位置之前的比他大的数的个数。模板题。时间复杂度O(nlogn) 空间复杂度 O(n)代码:class Solution {原创 2021-06-03 20:08:28 · 190 阅读 · 0 评论 -
《快排模板》75. 颜色分类《leetcode》
75. 颜色分类难度中等829给定一个包含红色、白色和蓝色,一共n个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数0、1和2分别表示红色、白色和蓝色。示例 1:输入:nums = [2,0,2,1,1,0]输出:[0,0,1,1,2,2]示例 2:输入:nums = [2,0,1]输出:[0,1,2]示例 3:输入:nums = [0]输出:[0]示例 4:输入:...原创 2021-03-26 21:34:10 · 159 阅读 · 0 评论 -
《桶排序》164. 最大间距《leetcode》
164. 最大间距难度困难293给定一个无序的数组,找出数组在排序之后,相邻元素之间最大的差值。如果数组元素个数小于 2,则返回 0。示例1:输入: [3,6,9,1]输出: 3解释: 排序后的数组是 [1,3,6,9], 其中相邻元素 (3,6) 和 (6,9) 之间都存在最大差值 3。示例2:输入: [10]输出: 0解释: 数组元素个数小于 2,因此返回 0。说明:你可以假设数组中所有元素都是非负整数,且数值在 32 位有符号整数范围内。 请尝..原创 2020-11-26 20:26:48 · 308 阅读 · 0 评论 -
蓝桥杯 算法训练 Beaver's Calculator 归并排序 java 100分版
问题描述 从万能词典来的聪明的海狸已经使我们惊讶了一次。他开发了一种新的计算器,他将此命名为"Beaver's Calculator 1.0"。它非常特别,并且被计划使用在各种各样的科学问题中。 为了测试它,聪明的海狸邀请了n位科学家,编号从1到n。第i位科学家给这个计算器带来了ki个计算题。第i个科学家带来的问题编号1到n,并且它们必须按照编号一个一个计算,因为对于每个问题的计算都必...原创 2019-03-06 23:04:59 · 701 阅读 · 0 评论 -
快速排序 及其随机化改进 java实现
Generally Speaking,快速排序是一种优秀的排序方法:平均时间复杂度O(nlogn),最坏情况下就是每次都挑到最大的值作为中介值,时间复杂度O(n^2);空间复杂度O(1),但是不稳定。eg :对 43 3 选择4为中介值进行排序,显然原来在第3个位置的3会被放到第1个位置,那么虽然集合中两个3的大小相同,但相对位置被改变了。下面看一下其原理:(原理转载:https:/...原创 2019-03-27 18:25:35 · 579 阅读 · 0 评论 -
浅谈java自定义排序(多维排序)(数组,列表,set,map)
前言:说到排序,不禁想起了Arrays.sort()方法,不过它只有一种顺序,即升序。可是我们做的题目中要求可能并不是升序,或者说其元素也不一定是一维的,那么怎么办?数组: 若元素是一维的,直接Arrays.sort(),但是如果想要倒序怎么办?emm。。。bingo,倒着输出不就完了嘛。 若元素是二维的以及以上的,那必须得自己定...原创 2019-03-22 18:14:46 · 1593 阅读 · 0 评论