java 希尔排序

来源:互联网 发布:单词社交网络怎么样 编辑:程序博客网 时间:2024/06/05 08:37
package 快速排序_归并排序_二分查找_等排序;/*希尔排序 * 升序 * 不稳定 */public class ShellSort {public static void main(String args[]){int[] arr = { 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, -1, -2, -3 };int d=arr.length;while(true){d=d/2;for(int i=0;i<d;i++){for(int j=i+d;j<arr.length;j=j+d){int temp = arr[j];int k;for(k=j-d;k>=0&&arr[k]>temp;k=k-d){arr[k+d]=arr[k];}arr[k+d]=temp;}}if(d==1){break;}}for(int i=0;i<arr.length;i++){System.out.println(arr[i]);}Sort(arr);}public static void Sort(int[] arr){//排序算法int d=arr.length;while(true){d=d/2;//增量for(int x=0;x<d;x++){for(int i=x+d;i<arr.length;i=i+d){int temp = arr[i];int j;for(j=i-d;j>=0&&arr[j]>temp;j=j-d)/*假设增量为5, * 则第一次比较 第一个和第五个 * 第二次比较第二个和第六个 * 若第一个大于第五个 则把第一个的值赋给第五个,一趟调整之后最后一个应该调整的位置是最大的值即temp */{arr[j+d]=arr[j];}arr[j+d]=temp;}}if(d==1){break;}}for(int i=0;i<arr.length;i++){System.out.println(arr[i]);}}}

0 0
原创粉丝点击