Java如何实现常用排序
创始人
2024-12-19 00:43:04
0次

  1.选择排序

  选择排序的基本思想是遍历数组的过程中,以i代表当前需要排序的序号,则需要在剩余的[i…n-1]中找出其中的最小值,然后将找到的最小值与i指向的值进行交换。因为每一趟确定元素的过程中都会有一个选择最大值的子流程,所以人们形象地称之为选择排序。

  举个实例来看看:

  初始:[38,17,16,16,7,31,39,32,2,11]   i=0:[2,17,16,16,7,31,39,32,38,11](0th[38]<->8th[2])   i=1:[2,7,16,16,17,31,39,32,38,11](1st[38]<->4th[17])   i=2:[2,7,11,16,17,31,39,32,38,16](2nd[11]<->9th[16])   i=3:[2,7,11,16,17,31,39,32,38,16](无需交换)   i=4:[2,7,11,16,16,31,39,32,38,17](4th[17]<->9th[16])   i=5:[2,7,11,16,16,17,39,32,38,31](5th[31]<->9th[17])   i=6:[2,7,11,16,16,17,31,32,38,39](6th[39]<->9th[31])   i=7:[2,7,11,16,16,17,31,32,38,39](无需交换)   i=8:[2,7,11,16,16,17,31,32,38,39](无需交换)   i=9:[2,7,11,16,16,17,31,32,38,39](无需交换)

  由例子可以看出,选择排序随着排序的进行(i逐渐增大),比较的次数会越来越少,但是不论数组初始是否有序,选择排序都会从i至数组末尾进行一次选择比较,所以给定长度的数组,选择排序的比较次数是固定的:1+2+3+….+n=n*(n+1)/2,而交换的次数则跟初始数组的顺序有关,如果初始数组顺序为随机,则在最坏情况下,数组元素将会交换n次,最好的情况下则可能0次(数组本身即为有序)。

  由此可以推出,选择排序的时间复杂度和空间复杂度分别为O(n2)和O(1)(选择排序只需要一个额外空间用于数组元素交换)。

  实现代码:

  /**   *SelectionSorting   */   SELECTION(newSortable(){   public>voidsort(T[]array,booleanascend){   intlen=array.length;   for(inti=0;i

  2.插入排序

  插入排序的基本思想是在遍历数组的过程中,假设在序号i之前的元素即[0..i-1]都已经排好序,本趟需要找到i对应的元素x的正确位置k,并且在寻找这个位置k的过程中逐个将比较过的元素往后移一位,为元素x“腾位置”,最后将k对应的元素值赋为x,插入排序也是根据排序的特性来命名的。

  以下是一个实例,红色标记的数字为插入的数字,被划掉的数字是未参与此次排序的元素,红色标记的数字与被划掉数字之间的元素为逐个向后移动的元素,比如第二趟参与排序的元素为[11,31,12],需要插入的元素为12,但是12当前并没有处于正确的位置,于是我们需要依次与前面的元素31、11做比较,一边比较一边移动比较过的元素,直到找到第一个比12小的元素11时停止比较,此时31对应的索引1则是12需要插入的位置。

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...