一、减治法在排序算法中的应用

插入排序:时间复杂度O(n^2),虽然和选择、冒泡在最坏的情况下时间复杂度相同,但是插排平均性能在比自身的最差性能快一倍,所以相比选择、冒泡来说,插排要领先于二者。

public class Main {public static void main(String[] args) {int[] a = {89, 45, 68, 90, 29, 34, 17};for (int i = 1; i < a.length; i++) {int v = a[i];int j = i-1;/*** 在前i-1个有序元素中找到一个合适位置,将a[i]插入* */while (j >= 0 && a[j] > v) {a[j+1] = a[j];j -= 1;}a[j+1] = v;}for (int i = 0; i < a.length; i++) {System.out.print(a[i] + " ");}}
}

发现问题:对于有序数组这样的最优输入来说,快排的性能非常好,但是这种情况毕竟没有太大的实际意义。而当大数据量测试的时候,快排总是不尽如人意。

优化思路:基于快排的一种拓展算法----Shell(希尔)排序

减治法在排序算法中的应用(JAVA)--插入排序相关推荐

  1. 分治法在排序算法中的应用(JAVA)--快速排序(Lomuto划分、Hoare划分、随机化快排)

    分治法在排序算法中的应用--快速排序 时间复杂度:平均O(nlogn),最坏O(n^2) 如果说归并排序是按照元素在数组中的位置划分的话,那么快速排序就是按照元素的值进行划分.划分方法由两种,本节将主 ...

  2. 减治法在查找算法中的应用(JAVA)--快速查找

    减治法在查找算法中的应用 快速查找:选择问题是求一个n个数列表的第k个最小元素的问题,这个数k被称为顺序统计量.对于k=1或k=n来说,这并没有什么意义,我们通常会要找出这样的元素:该元素比列表中一半 ...

  3. 减治法在查找算法中的应用(JAVA)--二叉查找树的查找、插入、删除

    减治法在查找算法中的应用 二叉查找树的查找与插入: 二叉排序树或者是一棵空树,或者是具有下列性质的二叉树: (1)若左子树不空,则左子树上所有结点的值均小于或等于它的根节点的值: (2)若右子树不空, ...

  4. 减治法在查找算法中的应用(JAVA)--折半查找

    减治法在查找算法中的应用 折半查找:(时间复杂度O(log以2为底n的对数)) 对于有序数组的查找来说,折半查找是一种非常高效的算法,其基本原理为:比较查找键k和数组中间元素a[m],如果相等,算法结 ...

  5. 分治法在排序算法中的应用(JAVA)--归并排序

    分治法最常用的就是将规模为n的实例划分成两个n规模为n/2的实例 .推广到一般的情况,我们可以将规模为n的实例划分为b个规模为n/b的实例.这样对于算法的运行时间存在递推式:T(n) = aT(n/b ...

  6. 在遗传算法中出现等式约束_排序算法中的稳定性-等式的处理

    在遗传算法中出现等式约束 by Onel Harrison 通过Onel Harrison 排序算法中的稳定性-等式的处理 (Stability in Sorting Algorithms - A T ...

  7. 排序算法中平均时间复杂度_操作系统中的作业排序(算法,时间复杂度和示例)...

    排序算法中平均时间复杂度 作业排序 (Job sequencing) Job sequencing is the set of jobs, associated with the job i wher ...

  8. 蛮力法在排序算法中的应用(JAVA)--选择排序、冒泡排序

    蛮力法在排序算法中的应用 对于一个排序问题,我们能想到的最简单的排序方法就是选择和冒泡 1.选择排序:时间复杂度O(n^2) public class Main {public static void ...

  9. java排序算法原理_排序算法原理与实现(java)

    排序算法原理与实现(java) Java程序员必知的8大排序 [来源:本站 | 日期:2012年12月24日 | 浏览173 次] 字体:[大 中 小] 8种排序之间的关系: 1, 直接插入排序 (1 ...

最新文章

  1. 在VmWare Workstation 6.5上安装Esx 3.5 U3之二
  2. Mark: Fisrt note with live writer
  3. 第三次Python作业———林东
  4. python测试开发自学教程-Web开发哪家强?看我用 Python 写一个颜值测试小工具
  5. vba和python哪个好学-python和vba学哪个
  6. Android安全系列工具
  7. 大数据WEB阶段Spring框架 AOP面向切面编程(一)
  8. android 权限管理框架,Android 运行时权限管理最佳实践
  9. html双翼布局,第19题 CSS如何实现双飞翼布局?
  10. java 垃圾回收机制_Java的垃圾回收机制
  11. apache+php+mysql+phpadmin 服务环境搭建
  12. C++: error: call of overloaded ‘abs(int)’ is ambiguous
  13. cad计算总长度插件_超实用的CAD插件大合集,视频教程手把手教学,工作效率翻倍...
  14. ICCV2021 香港理工、阿里达摩院提出RealVSR:视频超分任务中的新数据集与损失方案...
  15. C++之使用IO库输入输出
  16. Q95:纹理映射(Texture Mapping)(3)——Triangle Meshes
  17. C++中方法的(值参数、ref、out、params)详解
  18. Java常用软件官网下载地址【汇总】
  19. 白山搜索引擎优化收费_百度搜索引擎优化收费标准
  20. Android入门小项目--微信登录界面源码(倒计时、fragement切换、activity信息传递)

热门文章

  1. hashmap hash冲突怎么解决_HashMap原理及冲突之简谈
  2. PHP苹果不给上架,苹果商城上架拒绝
  3. Jsoup从一个文件加载一个文档
  4. 大学计算机课程第六章答案,大学计算机网络课程第六章.ppt
  5. python matplotlib模块教程_Python中的Matplotlib模块入门教程
  6. mysql查询三个月内的_如何在三个月内自学攻克雅思6.5分?
  7. python基础(14)之 类和对象
  8. 【youcans 的 OpenCV 例程 200 篇】104. 运动模糊退化模型
  9. linux 管道交互,Linux C:具有独立读写命名管道的“交互式会话”?
  10. ffmpeg-win32-v3.2.4 下载_iTOP-4412开发板android4.4代码下载和编译