冒泡排序(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) }