![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法第四版题目
KiloMeterKM
这个作者很懒,什么都没留下…
展开
-
几种常见的排序算法(插入排序,希尔排序,归并排序和快速排序),算法分析以及改进
最近刚看完《算法》第四版的第二章,把排序算法都实现了下,总结一下这几种排序算法的优劣,改进方案和应用场景。插入排序所需的时间取决于输入中元素的初始顺序,对一个很大且其中的元素已经有序(或者接近有序)的数组进行排序将会比对随机顺序的数组或是逆序数组进行排序快得多。static void exchange(int[] a,int i,int j) { int temp; temp=a[原创 2017-09-13 15:37:40 · 457 阅读 · 0 评论 -
算法第四版第一章练习1.4.15 3_sum的O(n²)解法
题目大意:给定一个数组,求取其中和为0的3个数的组数。时间复杂度要求O(n²)我这个应该可以吧。网上也找不着答案。。重点就是用一个count辅助数组把数组中的值给存储起来,方便索引,注意存储时数组会越界,这里我选择把所有值都给加上数组的最小值的绝对值。public static void main(String []args){ int []a= {-2,-1,2,3};原创 2017-09-07 16:03:23 · 641 阅读 · 0 评论 -
几种常见的排序算法(插入排序,希尔排序,归并排序和快速排序)——希尔排序
希尔排序是对插入排序的改进版本,在对于大型的数组来说,插入排序的速度很慢,因为每次只能交换两个相邻的元素,因此元素只能一点一点地从数组的一端移动到另一端,如果最小的元素刚好在数组的最后一位,就需要进行n-1次移动,在最坏的情况下时间复杂度为O(n²),希尔排序为了加快插入排序简单的改进了一下插入排序,交换不相邻的元素而对数组的局部进行排序,最终用插入排序将局部有序的数组排序。static vo原创 2017-09-20 16:32:20 · 584 阅读 · 0 评论