package com.jz; /** * @ClassName * @Description * @Author li_yangyang * @Date * @Version */ public class Shell_Sort { public static int[] shell_sort(int[] array) { //获取数组的长度 int n = array.length; //第一个循环决定比较的间隔 for (int i = n / 2; i > 0; i = i / 2) { //第二个循环根据间隔,将整个数组分为若干个子数组 for (int j = i; j < n; j++) { //第三个循环,在子数组内进行插入排序算法 for (int k = j; k >= i && array[k] < array[k - i]; k = k - i) { int temp = array[k]; array[k] = array[k - i]; array[k - i] = temp; } } } return array; } public static void main(String[] args) { //显示排序前的序列 int[] array={2,4,43,123,54123,464,4543,12}; System.out.println("排序前:"); for (int data:array) { System.out.print(data+" "); } System.out.println(); //显示排序后的序列 System.out.println("排序后:"); for (int data: Shell_Sort.shell_sort(array)) { System.out.print(data+" "); } } }