![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
排序
weixin_39137699
阳光,热情,幽默
展开
-
leetcode 148排序链表
在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。示例 1:输入: 4->2->1->3输出: 1->2->3->4示例 2:输入: -1->5->3->4->0输出: -1->0->3->4->5思路: nlogn时间复杂度 ,归并排序不过这里的想讲的是,链表找中点,必须...原创 2019-12-01 20:21:26 · 70 阅读 · 0 评论 -
leetcode 23 合并K个排序链表
合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。示例:输入:[1->4->5,1->3->4,2->6]输出: 1->1->2->3->4->4->5->6思路1: 最小堆的方法解决/** * Definition for singly-linked list. * public...原创 2019-12-01 16:03:43 · 56 阅读 · 0 评论 -
上浮,下沉的堆排序
package com.hnist.lzn.Resulbe;public class HeapSort { public static void Sort(int[] arr){ if(arr == null || arr.length == 0) return; HeapSorts(arr); } pub...原创 2019-09-14 16:34:51 · 593 阅读 · 0 评论 -
快速排序
首先,快速排序解决了在nlogn时间复杂度下解决排序问题,由于减少了元素的移动,实际比归并排序还要快。主要是分治思想,先切分(partition),切分这个函数做了什么事,选择一个基准值,把小于它的,放在它的左边,大于它的放在它的右边,最后再把partiton放在合适的中值上,再return 位置回去 。再分别从这个切分位置,再分别递归排序。快速排序精髓: 一个是切分,一个是递归。同时,快...原创 2019-08-18 15:44:50 · 139 阅读 · 0 评论 -
归并排序
归并排序就是利用归并的思想实现的排序方法。它的原理是假定初始序列含有n个记录,则可以看成是n个有序的子序列,每个子序列的长度为1,然后两两归并,得到n/2个长度为2或者1的有序子序列,再两两归并,…如此重复,直至得到一个长度为n有序序列为止 public static void sort(int[] arr){ int[] tempArr = new int[arr...原创 2019-08-18 12:38:38 · 173 阅读 · 0 评论 -
堆排序
什么是堆排序,堆排序能解决什么问题?在排序的过程中,不能把进行排序的过程中,得一些信息保留下来吗?来加快排序的速度吗?答案是可以的。通过利用完全二叉堆的结构来保留信息。堆的性质:每个节点都大于等于其左右孩子节点的值,称为大顶堆,或者每个节点的值都小于等于其左右孩子节点的值,称为小顶堆。ki>=k2i ki<=k2i 1...原创 2019-08-18 11:02:52 · 79 阅读 · 0 评论 -
希尔排序
什么是希尔排序,解决了什么问题?希尔排序,是排序算法时间复杂度还在O(n^2)的时代。提出一种更快的排序算法时,第一排速度快于O(n ^2)的算法之一。通过改进直接插入排序方法,将很多个数的序列,划分成很多子序列,子序列再分别直接插入排序,但是这样只能保证局部有序,那么最后再给整个排序,不能达到整个序列有序的效果。所以,策略就是跳跃分隔等策略,:将相距某个“”增量“” 的记录组成一个子序列,...原创 2019-08-17 23:56:03 · 70 阅读 · 0 评论 -
直接插入排序和简单选择排序
简单选择排序的思想:简单选择排序的基本思想是每一趟在 n-i+1个记录中选取关键字最小的记录作为有序序列的第i个记录直接插入排序思想:基本操作是将一个记录插入到已经排好序的有序表中,从而得到一个新的,记录加1的有序表。两者都是第二for循环都是不断查找,一个是不断往后找,一个在当前i,不断往前找。简单选择排序,就是在当前选择i的时候,从后序的n-i+1个记录中查找最小的那个数,插入当前位...原创 2019-08-17 21:40:24 · 4638 阅读 · 0 评论 -
冒泡排序
单纯记录之用冒泡排序: 两两之间比较,顺序逆序,则进行交换。同时,冒泡有3种不断改进的。直接付上代码: // 定义:冒泡排序,两两比较相邻的关键字,如果反序则交换,直到没有反序的记录为止。 // 第一种 public void BobbleSort(int[] s){ for(int i = 0;i<s.length;i++) // 第...原创 2019-08-17 17:58:49 · 52 阅读 · 0 评论 -
leetcode451
给定一个字符串,请将字符串里的字符按照出现的频率降序排列。示例 1:输入:"tree"输出:"eert"解释:'e'出现两次,'r'和't'都只出现一次。因此'e'必须出现在'r'和't'之前。此外,"eetr"也是一个有效的答案。示例 2:输入:"cccaaa"输出:"cccaaa"解释:'c'和'a'都出现三次。此外,"aaaccc"也是有效的答案。...原创 2019-07-31 21:14:30 · 102 阅读 · 0 评论 -
Leetcode347. 前 K 个高频元素
class Solution { public List<Integer> topKFrequent(int[] nums, int k) { List<Integer> list = new ArrayList<>(); if(nums.length == 0 || k <= 0){ re...原创 2019-07-30 23:55:57 · 53 阅读 · 0 评论