排序都使用数组进行元素的保存
1.冒泡排序。
冒泡排序,从左到右,把后一个元素与前一个元素做比较,小的往前移位。
1)一共会经过arr.length-1次的轮数比较,每一轮会确定一个数的位置
2)每一轮的比较次数在逐渐的减少
3) 当前面一个数比后面一个数大的时候就进行交换
4) f2函数没有返回值,在main函数中没有接收而是直接打印的arr1,因为用的是切片是引用类型会直接改变实参是数值,如果使用数组的话需要用数组的指针,因为数组是传值类型的。
unc f2(arr1 []int) { for j := 0; j < len(arr1)-1; j++ { for i := 0; i < len(arr1)-1-j; i++ { if arr1[i+1] < arr1[i] { var temp int = 0 temp = arr1[i] arr1[i] = arr1[i+1] arr1[i+1] = temp } } } }
func main() {
arr1 := []int{24, 69, 80, 57, 13}
f2(arr1)
fmt.Println(arr1)
}
2.直接选择排序,将第n个值依此与后面的值作比较,如果这个值大于这个后面的值则做一次交换
//直接选择排序:将第n个值依此与后面的值作比较,如果这个值大于这个后面的值则做一次交换 func f1(arr1 []int) { for i := 1; i < len(arr1); i++ { for j := 0; j < i; j++ { if arr1[i] < arr1[j] { var temp int = 0 temp = arr1[j] arr1[j] = arr1[i] arr1[i] = temp } } } } func main() { arr1 := []int{24, 69, 80, 57, 13} f1(arr1) fmt.Println(arr1) }
3.查找
有两种查找方式:顺序查找;二分查找(有序数组,排序完了才能进行查找)
1)顺序查找:查找某个字符串属于某个切片
使用了闭包函数,使切片只用传一次,就固定下来,后面每次调用函数是调用的f2只传字符串进行判断。
func f1(arr1 []string) func(s1 string) bool { return func(s1 string) bool { for _, key := range arr1 { if s1 == key { return true } } return false } } func main() { arr1 := []string{"白眉鹰王", "金毛狮王", "紫衫龙王", "青翼蝠王"} var s1 string fmt.Println("请输入一个名字:") fmt.Scanln(&s1) f2 := f1(arr1) res := f2(s1) fmt.Println(res) }
标签:f2,arr1,temp,int,s1,golang,func,排序 From: https://www.cnblogs.com/xiaoxiaomuyuyu/p/17119415.html