package main
import "fmt"
func main() {
//回顾练习:从数组[1, 3, 5, 7, 8]中找出和为8的两个元素的下标分别为(0,3)和(1,2)。
// var arr = [...]int{1, 3, 5, 7, 8}
// for i := 0; i < len(arr); i++ {
// for j := i + 1; j < len(arr); j++ {
// if arr[i]+arr[j] == 8 {
// fmt.Printf("(%v,%v)", i, j)
// }
// }
// }
/*
选择排序:进行从小到大排序
概念: 通过比较 首先选出最小的数放在第一个位置上,然后在其余的数中选出次小数放在第二个位置上,依此类推,直到所有的数成为有序序列。
[9, 8, 7, 6, 5, 4]
*/
/*
第一轮:
9 8 7 6 5 4
8 9 7 6 5 4
7 9 8 6 5 4
6 9 8 7 5 4
5 9 8 7 6 4
4 9 8 7 6 5 4放在了正确的位置
第二轮:
9 8 7 6 5
8 9 7 6 5
7 9 8 6 5
6 9 8 7 5
5 9 8 7 6 5放在了正确的位置
第三轮:
9 8 7 6
8 9 7 6
7 9 8 6
6 9 8 7 6放在了正确的位置
第四轮:
9 8 7
8 9 7
7 9 8 7放在了正确的位置
第五轮:
9 8
8 9 8放在了正确的位置
*/
//numSlice[0] = 4
//numSlice[1] = 5
//numSlice[2] = 6
//numSlice[3] = 7
//numSlice[4] = 8
//numSlice[5] = 8
//从小到大的排序
// var numSlice = []int{9, 8, 7, 6, 5, 4}
// for i := 0; i < len(numSlice); i++ {
// for j := i + 1; j < len(numSlice); j++ {
// if numSlice[i] > numSlice[j] {
// temp := numSlice[i]
// numSlice[i] = numSlice[j]
// numSlice[j] = temp
// }
// }
// }
// fmt.Println(numSlice)
//从大到小的排序
var numSlice = []int{6, 5, 4, 9, 8, 7}
for i := 0; i < len(numSlice); i++ {
for j := i + 1; j < len(numSlice); j++ {
if numSlice[i] < numSlice[j] {
temp := numSlice[i]
numSlice[i] = numSlice[j]
numSlice[j] = temp
}
}
}
fmt.Println(numSlice)
}
package main
import "fmt"
func main() {
/*
什么叫做冒泡排序?
概念:从头到尾,比较相邻的两个元素的大小,如果符合交换条件,交换两个元素的位置。
特点:每一轮比较中,都会选出一个最大的数,放在正确的位置。
第一轮:
9 8 7 6 5 4
8 9 7 6 5 4
8 7 9 6 5 4
8 7 6 9 5 4
8 7 6 5 9 4
8 7 6 5 4 9 9放在了正确的位置
第二轮:
8 7 6 5 4
7 8 6 5 4
7 6 8 5 4
7 6 5 8 4
7 6 5 4 8 8放在了正确的位置
第三轮:
7 6 5 4
6 7 5 4
6 5 7 4
6 5 4 7 7放在了正确的位置
第四轮:
6 5 4
5 6 4
5 4 6 6放在了正确的位置
第五轮:
5 4
4 5
*/
//冒泡排序从小到大
// var numSlice = []int{9, 6, 5, 4, 8}
// for i := 0; i < len(numSlice); i++ {
// for j := 0; j < len(numSlice)-1-i; j++ {
// if numSlice[j] > numSlice[j+1] {
// temp := numSlice[j]
// numSlice[j] = numSlice[j+1]
// numSlice[j+1] = temp
// }
// }
// }
// fmt.Println(numSlice)
//冒泡排序从大到下
var numSlice = []int{9, 6, 5, 4, 8}
for i := 0; i < len(numSlice); i++ {
for j := 0; j < len(numSlice)-1-i; j++ {
if numSlice[j] < numSlice[j+1] {
temp := numSlice[j]
numSlice[j] = numSlice[j+1]
numSlice[j+1] = temp
}
}
}
fmt.Println(numSlice)
}
package main
import (
"fmt"
"sort"
)
func main() {
//1、sort升序排序
// intList := []int{2, 4, 3, 5, 7, 6, 9, 8, 1, 0}
// float8List := []float64{4.2, 5.9, 12.4, 10.2, 50.7, 99.9, 31.4, 27.81828, 3.14}
// stringList := []string{"a", "c", "b", "z", "x", "w", "y", "d", "f", "i"}
// sort.Ints(intList)
// sort.Float64s(float8List)
// sort.Strings(stringList)
// fmt.Println(intList)
// fmt.Println(float8List)
// fmt.Println(stringList)
//2、sort降序排序
intList := []int{2, 4, 3, 5, 7, 6, 9, 8, 1, 0}
floatList := []float64{4.2, 5.9, 12.4, 10.2, 50.7, 99.9, 31.4, 27.81828, 3.14}
stringList := []string{"a", "c", "b", "z", "x", "w", "y", "d", "f", "i"}
sort.Sort(sort.Reverse(sort.IntSlice(intList)))
sort.Sort(sort.Reverse(sort.Float64Slice(floatList)))
sort.Sort(sort.Reverse(sort.StringSlice(stringList)))
fmt.Printf("%v\n%v\n%v\n", intList, floatList, stringList)
}