時間複雜度(平均) | 時間複雜度(最好) | 時間複雜度(最壞) | 空間複雜度 | 穩定性 | 複雜性 |
---|---|---|---|---|---|
O(n^1.3) | O(n^1.3) | O(n^1.3) | O(1) | 不穩定 | 較簡單 |
代碼shell
public void shellSort(int[] nums){ int gap = nums.length / 2; while(gap != 0){ for(int i = 0; i < gap; i++){ //此步循環至關於遍歷劃分出的數組 for(int j = i + gap; j < nums.length; j += gap){//對某個具體數組進行操做 int k = j; while(k - gap >= 0 && nums[k - gap] > nums[k]){ swap(nums, k, k - gap); k -= gap; } } } gap /= 2; } }
附插入排序(基於swap)代碼數組
public int[] insert(int[] nums){ int[] temp = new int[nums.length]; temp[0] = nums[0]; for(int i = 1; i < nums.length; i++){ for(int j = i - 1; j >= 0; j--){ if(nums[i] < temp[j]){ swap(temp, j, j + 1); }else { temp[j + 1] = nums[i]; break; } } } return temp; } private void swap(int[] nums, int i, int j){ int temp = nums[i]; nums[i] = nums[j]; nums[j] = temp; }