funcbubbleSort(nums []int) { n := len(nums) for i := n - 1; i > 0; i-- { for j := 0; j < i; j++ { if nums[j] > nums[j+1] { nums[j], nums[j+1] = nums[j+1], nums[j] } } } }
选择排序
1 2 3 4 5 6 7 8 9 10 11 12 13
funcselectSort(nums []int) { n := len(nums)
for i := n; i > 0; i-- { pos := 0 for j := 0; j < i; j++ { if nums[j] > nums[pos] { pos = j } } nums[i-1], nums[pos] = nums[pos], nums[i-1] } }
插入排序
1 2 3 4 5 6 7 8 9 10 11 12
funcinsertSort(nums []int) { n := len(nums) for i := 1; i < n; i++ { cur := nums[i] pos := i for pos > 0 && cur < nums[pos-1] { nums[pos] = nums[pos-1] pos -= 1 } nums[pos] = cur } }
funcshellSort(nums []int) { n := len(nums) gap := n / 2 for gap >= 1 { insertByGap(nums, gap) gap /= 2 } } funcinsertByGap(nums []int, gap int) { n := len(nums) for i := gap; i < n; i += gap { cur := nums[i] pos := i for pos > 0 && nums[pos-gap] > cur { nums[pos] = nums[pos-gap] pos -= gap } nums[pos] = cur } }