希尔排序(ShellSort)
2021-04-12 00:29
标签:lang 元素 util 一个 sort ack ring 最坏情况 break 1959年Shell发明,第一个突破O(n^2)的排序算法,是简单插入排序的改进版。它与插入排序的不同之处在于,它会优先比较距离较远的元素。希尔排序又叫缩小增量排序。 最佳情况:T(n) = O(nlog2 n) 最坏情况:T(n) = O(nlog2 n) 平均情况:T(n) =O(nlog n) 希尔排序(ShellSort) 标签:lang 元素 util 一个 sort ack ring 最坏情况 break 原文地址:https://www.cnblogs.com/jiezao/p/13357086.html1.1概述
1.2描述
1.3代码
package shellsort;
import java.util.Arrays;
/**
* @author xgj
*/
public class ShellSort {
public static void main(String[] args) {
int[] res = new int[]{1,2,5,4,6,8,7,9};
int[] ints = ShellSort.shellSort(res);
System.out.println(Arrays.toString(ints));
}
public static int[] shellSort(int[] arr){
//inc是增量
int temp = 0;
int j = 0;
//增量默认是长度的一半,每次变为之前的一半,直到最终数组有序
for(int inc=arr.length/2 ; inc>=1 ; inc/=2){
for(int i=inc ; i=0;j-=inc){
if(arr[j]>temp){
arr[j+inc] = arr[j];
}else{
break;
}
}
//将当前数放到空出来的位置
arr[j+inc]=temp;
}
}
return arr;
}
}
1.4分析
上一篇:排序(三)线性排序