直接上代码吧 public static void shellSort2(int arr[]) { if (arr.length == 0) return; int shell = arr.length / 2; while (shell != 0) { for (int i = shell; i < arr.length; i += shell) { for (int j = i - shell; j >= 0; j -= shell) { if (arr[j + shell] < arr[j]) { int temp = arr[j]; arr[j] = arr[j + shell]; arr[j + shell] = temp; } } } shell/=2; } for (int i : arr) { System.out.println(i); } } 解析:根据每次除以2定义一个希尔增量,希尔增量为0的时候推出循环。根据希尔增量逐渐将数组拆分进行插入排序。 首先分成四组 139268741–––6––––3–––8––––7–––9––––2–––4 然后分为两组顺序变为 137268941–6–7–9––2–3–4–6 然后分为一组顺序变为 12346789 !注意,每一步根据插入排序进重排。