java排序
来源:互联网 发布:电力数据库 编辑:程序博客网 时间:2024/06/05 03:20
针对一个200000大小的随机double数组进行排序
插入排序
对数组做for循环,每次找出当前位置到数组终点索引的最小值,与当前值比较并替换,时间复杂度n*n = O(n2)
插入排序 200000 长度数组,耗时 :10.036s
合并排序
将大数组分成两个小数组,依次递归分组,直到所有数组只有一个元素,然后,将数组按照顺序合并程大数组,依次合并得到最后结果,合并耗时O(n),分组耗时O(lgn),算法耗时O(nlgn)
合并排序 200000 长度数组,耗时 :0.471s
快速排序
从数组中取出最后一个数,将大于这个数的放在右边,小于这个数的放在左边,这个过程称为分割,然后分别对左边部分和右边部分分别递归分割,从而实现在原地排序,由于没有使用额外的内存来存放中间数组,因此此方法占用内存较少,分割所用时间O(n),当数组内数剧随机排列时递归次数为lgn,如果顺序排列则为n,因此算法平均耗时O(nlgn),如果随机取出一个数,则算法耗时O(nlgn)
快速排序 200000 长度数组,耗时 :0.456s
随机取值做分割的快速排序,这种算法在数组较大时分割的效果和使用最后一个值做分割的效果接近,但是在数组较小做分割时,使用最后一个数可能导致数组分割不均匀,导致分割的次数由lgn向n接近,从而降低算法的效率,这里做了测试,该算法的平均时间耗时0.3s
使用随机一个数据分割的快速排序200000 长度数组,耗时 :0.296s
代码
代码(收取1积分,我积分太少了,下载资源不够用。。)
阅读全文
0 0
- java排序----鸡尾酒排序
- java排序--归并排序
- java排序-希尔排序
- Java 排序 - 冒泡排序
- Java排序 Collections排序
- Java排序--插入排序
- 排序-选择排序-Java
- 排序-插入排序-Java
- 排序-归并排序-Java
- 排序-快速排序-Java
- java排序 -- 堆排序
- JAVA排序
- JAVA排序
- java排序
- java排序
- java排序
- JAVA排序
- java 排序
- 有道云笔记同步出现红色叹号的解决办法(以win10为例)
- 南阳OJ 题目111:分数加减法
- 废话记
- 全局锁和悲观锁的异常处理
- 欢迎使用CSDN-markdown编辑器
- java排序
- spring-mvc中的将data转换为json
- #770 –LayoutTransform和RenderTransform属性的区别(Difference Between LayoutTransform and RenderTransform)
- 树-堆结构练习——合并果子之哈夫曼树
- 集合---List
- canvas画柱状图及createLinearGradient颜色渐变的效果
- MongoDB:副本集的配置
- MySQL高可用之MHA的搭建
- 机器学习算法总结--决策树