各种排序算法的理解

本文主要探讨了如何利用JAVA泛型来实现快速排序算法,详细解释了代码实现过程,帮助读者理解快速排序的原理及其在JAVA中的应用。
摘要由CSDN通过智能技术生成


  一,直接插入排序
        总体思路:位于表中后面的元素依次与表中前面的元素比较,若比之小,则还需继续和更前面的元素比较,直至遇到一个比它大的元素或者比较到第一个元素(哨兵)了。        

         ①先将第一个元素视为有序,第二个元素与第一个元素比较,若比第一个元素小,则插入到第一个元素之前。第三个元素依次与第二个元素、第一个元素比较(前三个元素有序);第四个元素依次与第三个、第二个、第一个元素比较,插入到合适位置以形成一个有序表(即此时前四个元素有序)因此,直接插入排序算法是逐步地形成一个有序序列的。也即在表的前头形成一个局部有序序列。
        ②不论初始序列如何,总需要 N-1 趟排序,第一趟是第二个元素与第一个元素比,第二趟是第三个元素与前二个元素比,第三趟是第四个元素与前三个元素比……
        ③当初始序列有序时,第一趟只需比较一次,第二趟只需比较一次,第三趟也只需比较一次……总共只需比较 N-1 次即可完成排序。当初始序列逆序时,第一趟比较一次,第二趟比较二次,……第 N-1 趟比较 N-1 次。总共比较 n(n-1)/2 次。
       ④直接插入排列是基于明确的相邻位置的两个元素的比较,因此该算法是稳定的。排序过程的比较次数与待排序列的初始状态有关。每进行一趟排列并不能唯一地确定下一个元素的最终位置。

二,希尔排序
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值