2022-4-29 实习Day27
1、bugFix4-28测试问题检验测试解决。 –3小时 90%
2、汇款业务-行内汇款测试文档编写完毕。–3小时 100%
Golang编程学习(part 22)
1、排序的基本介绍:排序是将一组数据, 依指定的顺序进行排列的过程
① 内部排序
指将需要处理的所有数据都加载到内部存储器中进行排序。包括(交换式排序法、选择式排序法、插入式排序法)
② 外部排序
数据量过大, 无法全部加载到内存中, 需要借助外部存储进行排序。包括(合并排序法 和 直接合并排序法)
2、冒泡排序分析
冒泡排序的基本思想是:通过对待排序序列从后向前(从下标较大的元素开始),依次比较相邻元素的排序码,若发现逆序则交换,使排序码较小的元素逐渐从后部移向前部(从下标较大的单元移向下标较小的单元),就像水底下的气泡一样逐渐向上冒。
因为排序过程中,个元素不断接近自己的位置,如果一趟比较下来没有进行过交换,就说明序列有序,因此要在排序过程中设置一个标志flag判断元素是否进行过交换。从而减少不必要的比较(优化)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| package main
import "fmt"
func main() { ints := [10]int{1, 25, 4, 11, 26, 3, 7, 19, 20, 46} for i := 0; i < len(ints)-1; i++ { for j := 0; j < len(ints)-i-1; j++ { if ints[j] > ints[j+1] { ints[j], ints[j+1] = ints[j+1], ints[j] } } } fmt.Println(ints) }
|
3、查找(顺序查找、二分法查找)
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| index := -1 for i := 0; i < len(names); i++ { if heroName == names[i]{ index = i break } }
if index != -1 { fmt.Printf("找到%v, 下标%v \n", heroName, index) } else { fmt.Printf("没有找到", heroName) }
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| package main
import "fmt"
func main() { ints := []int{1, 8, 16, 24, 30, 70} BinaryFind(ints, 0, len(ints)-1, 8) }
func BinaryFind(slice []int, leftIndex int, rightIndex int, findVal int) { middle := (leftIndex + rightIndex) / 2
if leftIndex > rightIndex { fmt.Println("找不到") return }
if findVal < slice[middle] { BinaryFind(slice, leftIndex, middle-1, findVal) } else if findVal > slice[middle] { BinaryFind(slice, middle+1, rightIndex, findVal) } else { fmt.Printf("找到了,下标为%v", middle) } }
|