希尔排序的时间复杂度是O(n^1.3)~O(n^2),空间复杂度是O(1)。
代码如下:
/** * 源码名称: ShellSort.java * 日期:2014-08-11 * 程序功能:希尔排序 * 版权:[email protected] * 作者:A2BGeek */ public class ShellSort { public void shellSort(int[] in) { int length = in.length; int span = length / 2; int i, j; while (span >= 1) { // Selection Sort begin for (i = span; i < length; i++) { int tmp = in[i]; for (j = i - span; j >= 0 && tmp < in[j]; j -= span) { in[j + span] = in[j]; } in[j + span] = tmp; } // Selection Sort end span /= 2; printArray(in); } } public void printArray(int[] in) { for (int i : in) { System.out.print(i + " "); } System.out.println(); } public static void main(String[] args) { int[] testCase = { 1, 3, 4, 10, 2, 5, 6, 7, 9, 11 }; ShellSort mShellSort = new ShellSort(); mShellSort.printArray(testCase); mShellSort.shellSort(testCase); mShellSort.printArray(testCase); } }
【数据结构与算法】希尔排序
时间: 2024-10-20 00:10:31