时间复杂度(平均) | 时间复杂度(最好) | 时间复杂度(最坏) | 空间复杂度 | 稳定性 | 复杂性 |
---|---|---|---|---|---|
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; }