3.5排序算法之希尔排序(属于插入排序)
思路:
第一轮
1.先用数组长度/2等于一个值,该值就是区间的步长(做为比较)
2.让每个部分都做一个插入排序
第二轮
1.在将除过的值/2等于一个值,该值就是区间的步长(做为比较)
2.让每个部分都做一个插入排序
第三轮
1.在将除过的值/2等于一个值,该值就是区间的步长(做为比较)
2.让每个部分都做一个插入排序
最后就可以得出结果了!
代码:
package main.java.com.LiKou.arithmetic;
import java.util.Arrays;
/**
* 希尔排序:
* 比直接插入排序的效率高
*/
public class ShellSort {
public static void main(String[] args) {
int[] arr = new int[]{3, 7, 8, 2, 1, 4, 6, 9, 0};
shellSort(arr);
System.out.println(Arrays.toString(arr));
}
public static void shellSort(int[] arr){ //希尔排序
//遍历所有的步长
for(int d = arr.length / 2; d > 0; d /= 2){
//遍历所有的元素
for(int i = d; i //遍历本组中所有的元素
for(int j = i - d; j >= 0; j -= d){
//如果当前元素大于加上步长后的元素
if(arr[j] > arr[j + d]){
int temp = arr[j];
arr[j] = arr[j + d];
arr[j + d] = temp;
}
}
}
}
}
}
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.e1idc.net