总结一下排序嘿;)

有插入排序和拓扑排序。

1.插入排序/直接插入排序

假设对较小的数组A[0...n-2]已经排好序了,然后把A[n-1]找到一个合适的位置插进去。一般来说是从右向左扫描这个有序的数组,直到遇到第一个小于A[n-1]的元素,然后把A[n-1]插在这个元素的后面,插入的这个位置往往不是最终的位置。

for ( int i = 1; i < a.length; i++) {

int v =a[i];

int j=i-1;

while(j>=0&& a[j]>v) {

a[j+1] = a[j];

j--;

}

a[j+1]=v;

}

最坏的情况是输入一个严格递减的数组,C(worst)=((n-1)*n)/2。在这种情况下和蛮力法中的冒泡排序的键值比较次数是完全相同的。最好的情况是按照升序排列的数组,C(best)=n-1。对该算法平均效率的分析主要基于对无序数组的研究,平均比较次数是降序数组的一半,C(avg)=(n^2)/4;

2.拓扑排序

为了使拓扑排序成为可能,图必须是一个无环有向图。如果一个图没有回路,拓扑排序有解。有两种高效的算法,既可以验证一个有向图是否是一个无环有向图,又可以在是情况下,输入拓扑排序的一个顶点序列。

第一种:深度优先查找的简单应用。

执行一次DFS遍历,并记住顶点变成死端(即退出遍历栈)的顺序。将该次序反过来就得到拓扑排序问题的一个解。

第二种:基于减治技术的直接实现。

在有向图中求出一个源(一个没有任何输入边的顶点),把它和所有从它出发的边都删除。如果有多个这样的源,随意选择一个。源不存在,则无解。顶点被删除的次序是拓扑排序问题的一个解。

源删除算法获得的解和基于DFS的算法求得的解不同,两者都正确,所以,拓扑排序问题可能会有若干个不同的可选解。

java减治法深度优先查找_排序|减治法实现排序相关推荐

  1. html5播放m8u3,【甲减症状】甲减是怎么引起的_甲减的症状表现_甲减怎么治_百科-大众养生网...

    1.甲减是怎么引起的 甲减的原因有非常多,最主要的原因就是甲状腺功能减退导致的.甲状腺功能具有分泌甲状腺激素的功能.如果甲状腺功能受到了损伤或者是先天性甲状腺功能不足,导致了甲状腺分泌甲状腺激素减少, ...

  2. java对字符串快查找_字符串快速查找 - Trie算法

    Trie算法 先对给定的字符串进行归集,形成一个多叉树形结构. 使用字符导航方式作匹配查找. trie算法有很多变种,以最左(前缀)匹配为例进行说明. 优点 使用字符导航查找方式,能最大限度减少字符比 ...

  3. 用java写一个折半查找_用Java写一个折半查找。

    import java.util.Comparator; public class MyUtil { public static > int binarySearch(T[] x, T key) ...

  4. java list 拼接 字符串数组_把数组所有元素排序,并按照“参数=参数值”的模式用“”字符拼接成字符串...

    /** * 把数组所有元素排序,并按照"参数=参数值"的模式用"&"字符拼接成字符串 * @param params 需要排序并参与字符拼接的参数组 * ...

  5. java反序列化漏洞POP查找_利用 Java 反序列化漏洞在受限环境下获取反向 Shell

    原标题:利用 Java 反序列化漏洞在受限环境下获取反向 Shell 原文链接: https://medium.com/abn-amro-red-team/java-deserialization-f ...

  6. java二叉树的深度优先遍历_二叉树的广度优先遍历、深度优先遍历的递归和非递归实现方式...

    1 packageSolution;2 3 importjava.util.LinkedList;4 importjava.util.Queue;5 importjava.util.Stack;6 7 ...

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

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

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

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

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

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

最新文章

  1. Verilog中的条件编译语句 `ifdef、`else、`endif 等
  2. 【MyBatis】MyBatis自动生成代码之查询爬坑记
  3. Day8 字符串操作
  4. MySQL 数据库利用alter语句修改表字段属性实例演示,如何拓展表字段长度,sql语句修改表字段名称和类型
  5. java王子救公主的游_计蒜客 王子救公主(DFS)
  6. [Swift]LeetCode482. 密钥格式化 | License Key Formatting
  7. Mybatis自学日志05(复杂环境的搭建)
  8. UI设计实用临摹素材|APP设计的信息可视化!
  9. 这次看到源码了,华为开源了方舟编译器
  10. Cover V2将启用两条产品线 本周开始进行V2 UI开发
  11. 解决SpringMVC中文乱码问题 -----这是服务器返回参数到前端中文乱码
  12. cPanel虚拟主机上运行Python的方法
  13. 浅谈 Attention 机制的理解
  14. 【办公自动化】Excel“一键”生成国土“三调”转换代码
  15. qq一键登录 android,QQ帐号通Android全新登场:一键快捷登录腾讯应用
  16. 天使投资人如何评估创业公司价值
  17. CSPS2019Day1T2(括号树)题解
  18. Zynga发布魔法三消手游《Harry Potter: Puzzles Spells》
  19. 微信小程序开发《6 .框架之逻辑层》
  20. Power BI-同比、环比、累计值

热门文章

  1. 首次公开 | 淘系技术总监马鏖谈淘系用户增长
  2. 重磅开源|AOP for Flutter开发利器——AspectD
  3. Tensorflow源码解析3 -- TensorFlow核心对象 - Graph 1
  4. 玩转CocoaPods
  5. Redis 使用 List 实现消息队列的利与弊
  6. 向下一代互联网迈进 声网发布全链路加速FPA为互联网增加QoS保障
  7. 融云任杰:强互动,RTC下一个“爆点”场景|拟合
  8. 云现场 | 为什么说边缘计算是5G时代的必备品?
  9. 云有约 | 在去O的道路上,AWS表示:经验可复制,惊喜并非只属于我们!
  10. 电脑桌面归纳小窗口_电脑一分钟小技巧:如何将电脑设置为定时关机?