数据结构与算法 排序--希尔排序

Java数据结构和算法
上一篇 主目录 下一篇
package sort;

public class ShellSort {
     

	public static void main(String[] args) {
     
		// TODO Auto-generated method stub

		int[] arr=new int[] {
     34,23,45,-56,76,8,4,34,0};
		System.out.println("before sorting");
		for(int a:arr) {
     
			System.out.printf("%d\t",a);
		}
		shellSort(arr);
		System.out.println("\nafter sorting");
		for(int a:arr) {
     
			System.out.printf("%d\t",a);
		}
	}

	//希尔排序
	public static void shellSort(int[] arr) {
     
		int temp = 0;
		//int count = 0;
		for (int gap = arr.length / 2; gap > 0; gap /= 2) {
     
			for (int i = gap; i < arr.length; i++) {
     
				// 遍历各组中所有的元素(共gap组,每组有个元素), 步长gap
				for (int j = i - gap; j >= 0; j -= gap) {
     
					// 如果当前元素大于加上步长后的那个元素,说明交换
					if (arr[j] > arr[j + gap]) {
     
						temp = arr[j];
						arr[j] = arr[j + gap];
						arr[j + gap] = temp;
					}
				}
			}
			//System.out.println("希尔排序第" + (++count) + "轮 =" + Arrays.toString(arr));
		}
	}
}

你可能感兴趣的:(Java,希尔排序)