今天看到论坛有问道希尔排序,特地上网搜了一下。原理:http://blog.csdn.net/cjf_iceking/article/details/7916194
代码实现:
- package cn.itcat.damo1;
- /*
- * 希尔排序
- */
- public class Shell {
-
- public static void main(String[] args) {
- int[] arr = {1,3,2,4,49,38,65,97,76,13,27,49,78,34,12,64,1};
- shellSort(arr);
- }
- private static void shellSort(int[] arr) {
- System.out.println("排序之前:");
- //遍历数组
- for(int i=0;i<arr.length;i++)
- System.out.print(arr[i]+" ");
- //希尔排序
- int len = arr.length;
- while(true){
- //依次缩减len/2的增量
- len = len/2;
- for(int i=0;i<len;i++){
- for(int j=i+len;j<arr.length;j=j+len){
- int temp = arr[j];
- int k=0;
- for(k=j-len;k>=0&&arr[k]>temp;k=k-len){
- arr[k+len] = arr[k];
- }
- arr[k+len] = temp;
- }
- }
-
- if(len == 1)
- break;
- }
- System.out.println();
- System.out.println("排序之后:");
- for(int i=0;i<arr.length;i++)
- System.out.print(arr[i]+" ");
- }
- }
复制代码
|