zoukankan      html  css  js  c++  java
  • 关于java集合排序

    对于排序,java开发者并不陌生。
    为避免以后遗忘,现在再次总结一下!

    常见8大排序算法,
    平时自己熟悉的只有几种种!冒泡,二分/折半、插入、快排等!现在一一讲解一下,这里只讲思想,暂时不做实现!

    一、冒泡排序:
    对无序排列,按照两两比较排序,如果a>b,则a b互换值!
    例如:对3、7、2、5、0、1进行排序
    首先,3分别跟7、2、5、0、1进行比较,如果大于则互换位置;
    然后,7分别跟剩下的进行比较,如果大于则互换....
    这样可以看出他们的算法复杂度是O(N^2),较不可取!
    二、二分排序(折半排序):
    又叫做二分查找,因为一般情况是为了在“已排序”的序列中找到某个值:每次取中间的值跟要查找的值进行比较,求该值所落在的区间(前半区间还是后半区间),重复直到
    查找到。
    实际上我们也可以使用它的算法原理实现排序。
    例如:有一无序序列:5、8、3、4、9、2
    首先,任取该序列中的两个数,比较大小,确定位置
    然后,将剩下的数依次跟两个数的平均值比较,若大于平均值则再跟大数区间比较,若小于则跟小数区间比较,重复查找插入即可。
    三、插入排序:
    参考二分排序。
    四、快排:
    这种排序算法明显比其他排序算法更快,而且考察很普遍,项目中也应该经常使用。
    具体实现其实就是应用两种方式的结合,一是分治,二是递归。其实就是不断递归的拆分成更小序列单元,然后跟取出的一个中间数进行比较。
    例如:无序序列:5、8、2、1、4、6、9
    首先,任取一个数,这里取 5 ,
    然后,将所有比5小的数放在左边,大的放右边,
    最后,重复上述将两个序列进行递归排序

  • 相关阅读:
    父容器直接清除浮动的css
    [原创 js]指定DOM中添加字符串函数
    跨浏览器的透明度解决方案(包括IE8 Beta 2)
    [原创 js]验证表单强度的js
    帧率、码流与分辩率之间关系
    隔行扫描和逐行扫描(interlace and progressive )
    VGA管脚定义
    红眼消除
    HDMI_VGA_CBVS同时显示
    分辨率与行场同步信号的关系
  • 原文地址:https://www.cnblogs.com/kevinfuture/p/5590265.html
Copyright © 2011-2022 走看看