排序算法
一般Java中进行排序会直接调用Collection接口,但是算法的基本原理还是要懂的:
先看一下都有都有什么排序
排序算法
直接排序
把序列分为有序和无序两部分
默认序列第一个记录是有序的,
a.把序列分为有序和无序两部分,默认第一个记录为有序
b.设立监视哨兵在最后一般第一个数当哨兵,其实不要哨兵也可以,
c.哨兵的作用是判断数组边界,防止数组下标越界
如下图:
对49,38,65,97,76,13,27进行直接排序
希尔排序
希尔排序又叫缩小增量排序,
gap步长,每次为原来的一般
gap1=4
gap2=2
gap3=1
举例:13 27 49 55 04 38 65 97 76
gap=9/2=4
如下图:
对27 49 55 04 38 65 97 76 进行希尔排序
注:网上找不到合适的例子,自己写了一个算了一遍
简单选择排序
从序列中找出最小的数,如果不是第一个元素就与第一个元素互换,
然后在剩下序列中找出最小的,一次类推,直到将当前第 i 小的元素放在位置 i 上
堆排序
分为小堆和大堆下图是小堆
大堆比较好理解,这里放的是小堆的计算过程
冒泡排序
像压强或气泡一样,大的沉下去,小的浮上来
快速排序
首先选取一个中轴值,将序列分为两部分,从两边节点想中间靠拢
好像折纸一样,二分之一,又二分之一,有二分之一。。。
如下图:
46 30 82 90 56 17 95 15 共8个元素