首页 > 其他分享 >golang 排序

golang 排序

时间:2023-02-14 14:25:21浏览次数:40  
标签:f2 arr1 temp int s1 golang func 排序

排序都使用数组进行元素的保存

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

相关文章

  • TreeMap实现排序
    TreeMapTreeMap实现SortMap接口,能够把它保存的记录根据键排序,默认是按键值的升序排序,也可以指定排序的比较器。当用Iterator遍历TreeMap时,得到的记录是排过序的。TreeMap取......
  • TreeMap是按照key的字典顺序来排序
    一、TreeMapTreeMap默认排序规则:按照key的字典顺序来排序(升序)字典排序(lexicographicalorder)是一种对于随机变量形成序列的排序方法。即按照字母顺序,或者数字小大顺序,由小......
  • C++奥赛一本通排序题解
    title:C++奥赛一本通刷题记录(排序)date:2017-11-16tags:一本通openjudegecategories:OIC++奥赛一本通刷题记录(排序)2017.11.16Bygwj1139177410都是拿STL水的…别......
  • 数组的排序和查找
    1.数组156注意数组知识点double[]hens={3,5,1,3.4,2,50};1.double[]表示是double类型的数组,数组名hens2.{3,5,1,3.4,2,50}表示数组的值/元素,依次表示数......
  • #yyds干货盘点# LeetCode程序员面试金典:合并排序的数组
    题目:给定两个排序后的数组A和B,其中A的末端有足够的缓冲空间容纳B。编写一个方法,将B合并入A并排序。初始化 A和B的元素数量分别为 m和n。示例:输入:A=[1......
  • LeetCode-83. 删除排序链表中的重复元素(java)
    一、前言:......
  • go排序方法总结
    1、方法总结sort.Intssort.Floatssort.Stringssort.SliceStablesort.Interface{}2、实例//sort.Ints()s:=[]int{4,2,3,1}sort.Ints(s)fmt.Println(s)//......
  • [数据结构] 排序算法的原理代码及可视化演示
    排序算法本文汇总了核心排序算法及其代码实现:-插入法:直接插入排序,折半插入排序,2-路插入排序(折半插入的改进版)(待更新),希尔排序(待更新)-交换法:冒泡排序,快速......
  • 【问题讨论】关于golang调用so的问题的讨论
    runtime:dlopen/dlsymwithoutCGo#18296 Open  iamacarpetopenedthisissueDec13,2016·12comments  Open  ......
  • 二叉排序树的平均查找长度(成功&&不成功)
    二叉排序树的平均查找长度上图所示为二叉排序树查找成功时的平均查找长度:ASL=∑(本层高度*本层元素结点个数)/结点总数=(1*1+2*2+3*2)=11/5查找失败时的平......