2023-03-30 05:40PM
题目:
对数组的元素进行正序(从小到大)和倒序(从大到小)的排列
只使用 比较符号 ( > , < ) 和条件判断 和 循环语句,对一个数组进行排序。
可以多次定义变量,但是不能定义多个方法(所有代码都写在一个 (大部分)或者2个方法中)
不能使用 [1,2,3,5,8].sort 这样的方法
例如:
my_sort([4,8,9,1,2,5] ) # => [1,2,4,5,8,9]
正序(从小到大排序)带日志:
package main
import "fmt"
//创建一个新函数,函数参数名称为array, 类型为整数数组,返回类型为整数数组
//想要把数组从小到大排序
func number(arr []int) []int {
//第一层for循环,i是数组元素的下标, i遍历数组
for i := 0; i<len(arr); i++{
fmt.Println("i", i)
//第二层for循环,i给j定了给范围,在这个范围内大于0
//for循环里面,求正序,如果j-1大于j,则j向前(数组的左边)移动一位,直到j=0,停止j循环,然后i+1
for j := i; j > 0 && arr[j-1] > arr[j]; j--{
fmt.Println("换位置之前arr:", arr ,"arr[j]:", j, "[j-1]:", j-1)
arr[j], arr[j-1] = arr[j-1], arr[j]
fmt.Println("换位置之后arr:", arr,"arr[j]:", j, "arr[j-1]:", j-1)
}
}
return arr
}
func main() {
fmt.Println(number([]int{2,6,4,1,7,3}))
}
结果:
i 0
i 1
i 2
换位置之前arr: [2 6 4 1 7 3] arr[j]: 2 [j-1]: 1
换位置之后arr: [2 4 6 1 7 3] arr[j]: 2 arr[j-1]: 1
i 3
换位置之前arr: [2 4 6 1 7 3] arr[j]: 3 [j-1]: 2
换位置之后arr: [2 4 1 6 7 3] arr[j]: 3 arr[j-1]: 2
换位置之前arr: [2 4 1 6 7 3] arr[j]: 2 [j-1]: 1
换位置之后arr: [2 1 4 6 7 3] arr[j]: 2 arr[j-1]: 1
换位置之前arr: [2 1 4 6 7 3] arr[j]: 1 [j-1]: 0
换位置之后arr: [1 2 4 6 7 3] arr[j]: 1 arr[j-1]: 0
i 4
i 5
换位置之前arr: [1 2 4 6 7 3] arr[j]: 5 [j-1]: 4
换位置之后arr: [1 2 4 6 3 7] arr[j]: 5 arr[j-1]: 4
换位置之前arr: [1 2 4 6 3 7] arr[j]: 4 [j-1]: 3
换位置之后arr: [1 2 4 3 6 7] arr[j]: 4 arr[j-1]: 3
换位置之前arr: [1 2 4 3 6 7] arr[j]: 3 [j-1]: 2
换位置之后arr: [1 2 3 4 6 7] arr[j]: 3 arr[j-1]: 2
[1 2 3 4 6 7]
倒序(从大到小排序)带日志:
package main
import "fmt"
//想要把数组从大到小排序
func insertionSort (arr []int) []int {
//第一层for循环,i是数组下标,i遍历数组
for i := 0; i<len(arr); i++{
fmt.Println("i:", i)
//第二层for循环,求倒序,如果j-1小于j,则j向后(数组里面向右)移动一位,直到j=0,停止j循环,然后i+1
for j := i; j>0 && arr[j-1] < arr[j]; j--{
fmt.Println("换位置之前arr:", arr ,"arr[j]:", j, "[j-1]:", j-1)
arr[j], arr[j-1] = arr[j-1], arr[j]
fmt.Println("换位置之后arr:", arr,"arr[j]:", j, "arr[j-1]:", j-1)
}
}
return arr
}
func main() {
fmt.Println(insertionSort([]int {2,6,4,1,7,3}))
}
结果:
i: 0
i: 1
换位置之前arr: [2 6 4 1 7 3] arr[j]: 1 [j-1]: 0
换位置之后arr: [6 2 4 1 7 3] arr[j]: 1 arr[j-1]: 0
i: 2
换位置之前arr: [6 2 4 1 7 3] arr[j]: 2 [j-1]: 1
换位置之后arr: [6 4 2 1 7 3] arr[j]: 2 arr[j-1]: 1
i: 3
i: 4
换位置之前arr: [6 4 2 1 7 3] arr[j]: 4 [j-1]: 3
换位置之后arr: [6 4 2 7 1 3] arr[j]: 4 arr[j-1]: 3
换位置之前arr: [6 4 2 7 1 3] arr[j]: 3 [j-1]: 2
换位置之后arr: [6 4 7 2 1 3] arr[j]: 3 arr[j-1]: 2
换位置之前arr: [6 4 7 2 1 3] arr[j]: 2 [j-1]: 1
换位置之后arr: [6 7 4 2 1 3] arr[j]: 2 arr[j-1]: 1
换位置之前arr: [6 7 4 2 1 3] arr[j]: 1 [j-1]: 0
换位置之后arr: [7 6 4 2 1 3] arr[j]: 1 arr[j-1]: 0
i: 5
换位置之前arr: [7 6 4 2 1 3] arr[j]: 5 [j-1]: 4
换位置之后arr: [7 6 4 2 3 1] arr[j]: 5 arr[j-1]: 4
换位置之前arr: [7 6 4 2 3 1] arr[j]: 4 [j-1]: 3
换位置之后arr: [7 6 4 3 2 1] arr[j]: 4 arr[j-1]: 3
[7 6 4 3 2 1]
登录
请登录后再发表评论。
评论列表:
目前还没有人发表评论