diff --git a/src/main/java/com/yzh/ShellSort.java b/src/main/java/com/yzh/ShellSort.java index 511cf5ab062b7586850b5301e8fd450346ac1ccf..bcc486d00679d0c3aa1b4a6811c4b4598f3fbc4a 100644 --- a/src/main/java/com/yzh/ShellSort.java +++ b/src/main/java/com/yzh/ShellSort.java @@ -1,15 +1,21 @@ package com.yzh; -/** - * 要求通过希尔排序算法对一个数组进行升序排序,使用Java语言实现 - * 输入:给定的数组 arr - * 输出:排序好的数组 arr - */ public class ShellSort { public int[] solution(int arr[]) { - //请在下方编辑代码 - - + int len = arr.length; + int temp, gap = len / 2; + while (gap > 0) { + for (int i = gap; i < len; i++) { + temp = arr[i]; + int preIndex = i - gap; + while (preIndex >= 0 && arr[preIndex] > temp) { + arr[preIndex + gap] = arr[preIndex]; + preIndex -= gap; + } + arr[preIndex + gap] = temp; + } + gap /= 2; + } return arr; } }