![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
排序
小马哥MAX
刷题记录BLOG
展开
-
快速排序完美优化版【JAVA】
相比较原始快排,这里优化了两个地方:优化1:为防止在近乎有序的数组,partition分割极度不平衡,可将v元素随机化选取优化2:递归到一定程度可使用插入排序另外为了方便大家理解partition过程,附图一张: public void quickSort(int[] nums){ if(nums == null || nums.length <=0)...原创 2018-08-31 21:13:19 · 1792 阅读 · 2 评论 -
归并排序(最终版)
动画演示归并过程Merge设置一个辅助空间aux(图下二数组)代码优化,merge操作只在arr[mid] > arr[mid+1]时进行,否则说明两部分是有序的,这样当数组接近有序的情况,归并次数减少,效率提高。void mergeSort(int[] arr){ mergeSort(arr, 0, arr.length-1); ...原创 2019-04-02 11:26:07 · 164 阅读 · 1 评论 -
常用O(n^2)排序算法总结【JAVA版】
1、插入排序(初版) public void insertSort(int[] nums){ if(nums == null || nums.length<=0) return; for(int i=1 ; i<nums.length ; i++){ for(int j=i ; j>0 ; j--){ ...原创 2018-08-30 21:47:14 · 243 阅读 · 1 评论 -
【两次过】Lintcode 148. 颜色分类
给定一个包含红,白,蓝且长度为 n 的数组,将数组元素进行分类使相同颜色的元素相邻,并按照红、白、蓝的顺序进行排序。我们可以使用整数 0,1 和 2 分别代表红,白,蓝。样例给你数组[1, 0, 1, 2], 需要将该数组原地排序为[0, 1, 1, 2]。挑战一个相当直接的解决方案是使用计数排序扫描2遍的算法。首先,迭代数组计算 0,1,2 出现的次数,然后依次...原创 2018-07-01 22:18:44 · 221 阅读 · 0 评论 -
【简单】Lintcode 39:恢复旋转排序数组
Given arotatedsorted array, recover it to sorted array in-place.ClarificationWhat is rotated array?For example, the orginal array is [1,2,3,4], The rotated array of it can be原创 2018-01-27 15:50:27 · 181 阅读 · 0 评论