Open hankviv opened 4 years ago
选择排序:每次遍历 都选择到一个的最小的数,每次循环都拿到最小的数
func selectionSort(arr []int) []int {
for i:=0; i<len(arr); i++ {
min := i
for j := i+1;j<len(arr);j++{
if arr[i] > arr[j]{
min = j
}
}
arr[i],arr[min] = arr[min],arr[i]
}
return arr
}
冒泡: 两两比较,每次遍历最大的在最后一位
func bubbleSort(nums []int) []int {
for i:=0; i<len(nums) ; i++ {
for j :=1; j<len(nums) - i -1; j++{
if nums[j] > nums[j+1]{
nums[j],nums[j+1] = nums[j+1],nums[j]
}
}
}
return nums
}
稳定性:两个相同的的元素,排序后相对顺序不变。 稳定:冒泡、插入、归并和基数。 不稳定:选择、快速、希尔、堆。
比如选择排序的 时候 [5 9 5 2]第一次选择的时候 把第一个5和2交换了,但是稳定性要求排序完后第一个5要在第二个5前面,所以选择排序是不稳定的。
快速排序:分治思想,把大的排序 切成小的排序,一直切到两个数字比较,然后再合并数组