排序办法 | 工夫复杂度(均匀) | 工夫复杂度(最坏) | 工夫复杂度(最好) | 空间复杂度 | 稳定性 | 复杂性 |
---|---|---|---|---|---|---|
插入排序 | O(n^2) | O(n^2) | O(n) | O(1) | 稳固 | 简略 |
希尔排序 | O(nlogn) | O(n^2) | O(n^1.3) | O(1) | 不稳固 | 较简单 |
一、插入排序
public static void sort(int[] arr) {for (int i = 1; i < arr.length; i++) {int tmp = arr[i];
int j;
for (j = i - 1; j >= 0 && tmp < arr[j]; j--) {arr[j + 1] = arr[j];
}
arr[j + 1] = tmp;
}
}
二、希尔排序(放大增量排序)
public static void sort(int[] arr) {for (int gap = arr.length / 2; gap > 0; gap = gap / 2) {for (int i = 0; i < gap; i++) {for (int j = i + gap; j < arr.length; j += gap) {int tmp = arr[j];
int k;
for (k = j - gap; k >= 0 && tmp < arr[k]; k -= gap) {arr[k + gap] = arr[k];
}
arr[k + gap] = tmp;
}
}
}
}
…. 待欠缺,最终会把所有罕用排序都放进来