package main import "fmt" // 1.冒泡排序 // 原理:对于数组里的元素,从左到右依次进行比较,如果左边的比右边的大就交换位置 // 这样每走一轮,便可以将一个最大的数放在最右边,就像冒泡一样 func bubble_sort(a []int){ for i:=0;i<len(a)-1;i++{ flag:=true for j:=0;j<len(a)-i-1;j++{ if a[j]>a[j+1]{ a[j],a[j+1] = a[j+1],a[j] flag = false } } if flag{ break } } } // 2.选择排序 // 原理:从左到右,先假设最左边的元素最小,然后和右边的元素依次比较 // 谁小谁就放在最左边,一轮下来,可以确定最小的元素 // 然后再从下一个元素开始 func select_sort(a []int){ for i:=0;i<len(a)-1;i++{ min_index := i for j:=i+1;j<len(a);j++{ if a[min_index] > a[j]{ a[min_index],a[j]=a[j],a[min_index] } } } } // 3.插入排序 //原理:依旧是从左到右,让j指向的元素不断地和左边的进行比较 //如果左边比右边的大,那么就交换位置,有点类似于冒泡排序 func insert_sort(a []int){ for i:=0;i<len(a)-1;i++{ j := i+1 for { if j>0 && a[j]<a[j-1]{ a[j],a[j-1]=a[j-1],a[j] j -= 1 }else{ break } } } }