冒泡排序(bubblesort)ui
特色:经过换位置的方式,一直向上冒泡spa
package main import "fmt" func bubbleSortAsc(arrayA []int){ for i:=0; i < len(arrayA); i++ { for j:=0; j < len(arrayA)-1-i; j++ { if arrayA[j] > arrayA[j+1]{ arrayA[j], arrayA[j+1] = arrayA[j+1], arrayA[j] } } } fmt.Println(arrayA) } func bubbleSortDesc(arrayA []int){ for i:=0; i < len(arrayA); i++{ for j:=0; j < len(arrayA)-1-i; j++{ if arrayA[j] < arrayA[j+1]{ arrayA[j], arrayA[j+1] = arrayA[j+1], arrayA[j] } } } fmt.Println(arrayA) } func main(){ var arrayA []int = []int{1,3,5,2,9,10,6,4,8,7} bubbleSortAsc(arrayA) bubbleSortDesc(arrayA) }
快速排序(quicksort)blog
特色:外层循环每次能肯定一个最小/大的数,第二次循环能肯定第二小/大的数排序
package main import "fmt" func quickSortAsc(arrayA []int){ for i:=0; i < len(arrayA); i++ { for j:=i+1; j < len(arrayA); j++ { if arrayA[i] > arrayA[j]{ arrayA[i], arrayA[j] = arrayA[j], arrayA[i] } } } fmt.Println(arrayA) } func quickSortDesc(arrayA []int){ for i:=0; i < len(arrayA); i++{ for j:=i+1; j < len(arrayA); j++{ if arrayA[i] < arrayA[j]{ arrayA[i], arrayA[j] = arrayA[j], arrayA[i] } } } fmt.Println(arrayA) } func main(){ var arrayA []int = []int{1,3,5,2,9,10,6,4,8,7} quickSortAsc(arrayA) quickSortDesc(arrayA) }
插入排序(insertsort)class
像打扑克牌时的抓牌,第一张牌是不须要插入的,第二张牌开始就须要插入了,根据习惯,这里是从右往左看,小的一直往左边挪,一旦确认位置就退出循环(去抓下一张牌)import
package main import "fmt" func insertSortAsc(arrayA []int){ for i:=1; i < len(arrayA); i++ { for j:=i; j > 0; j-- { fmt.Println(arrayA[j]) if arrayA[j-1] > arrayA[j]{ arrayA[j-1], arrayA[j] = arrayA[j], arrayA[j-1] } else { break } } } fmt.Println(arrayA) } func insertSortDesc(arrayA []int){ for i:=1; i < len(arrayA); i++{ for j:=i; j > 0; j--{ if arrayA[j-1] < arrayA[j]{ arrayA[j-1], arrayA[j] = arrayA[j], arrayA[j-1] } else { break } } } fmt.Println(arrayA) } func main(){ var arrayA []int = []int{3,1,5,2,9,10,6,4,8,7} insertSortAsc(arrayA) insertSortDesc(arrayA) }