希尔排序
希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本,但希尔排序是非稳定的排序算法。
算法思想: 先将整个待排序的记录序列分割成若干子序列分别进行直接插入排序,待整个序列中的记录“基本有序”时,再对全体记录进行依次直接插入排序;
代码实现:
package sort; import java.util.Arrays; /** * @author yangpeng * @create 2021-06-02 22:11 */ public class HillSort { public static void main(String args[]){ int []arr={0,9,3,1,4,7}; hillSort(arr); System.out.println(Arrays.toString(arr)); } public static void hillSort(int [] arr){ int gap=arr.length; //设置一个增量 for(int i=gap;i>0;i=i/2){ //每经过一轮循环增量就缩小1/2,每一轮循环是对若干个子序列进行直接插入排序 for(int j=i;j<arr.length;j++){ int m=j-i; int temp=arr[j]; while(m>=0&&arr[m]>temp){ arr[m+i]=arr[m]; m-=i; } m=m+i; arr[m]=temp; } } } }