每天一道编程题(六)-------希尔排序

来源:互联网 发布:js电机 编辑:程序博客网 时间:2024/05/16 15:54

希尔排序的主题思想其实就是分治,各个小模块之间执行插入排序,写起来也很简单,我以两种插入排序做了希尔排序,只是多了一个分治的for循环

public class ShellSort {  public static void shellsort(int[] nums){  for(int increase=(nums.length/2);increase>0;increase/=2){  for(int i=increase;i<nums.length;i++){ int temp=nums[i];  for(int j=i;j>=increase;j-=increase){  if(nums[j]<nums[j-increase]){     nums[j]=nums[j-increase];  }else{  break;  }  nums[j-increase]=temp;  }    }  }  }  public static void shellsort2(int[] nums){  for(int increase=(nums.length/2);increase>0;increase/=2){  for(int i=increase;i<nums.length;i++){  for(int j=i;j>=increase;j-=increase){  if(nums[j]<nums[j-increase]){  int temp=nums[j];     nums[j]=nums[j-increase];     nums[j-increase]=temp;  }  }    }  }  }public static void main(String[] args) {int[] num={1,2,6,8,4,3};int[] nums={10,9,8,7,6,5,4,3,2,1};  shellsort2(num);  for(int a:num){  System.out.println(a);}}}


原创粉丝点击