zoukankan      html  css  js  c++  java
  • 冒泡排序和选择排序(Go语言实现)

    冒泡排序和选择排序是排序算法中比较简单和容易实现的算法。冒泡排序的思想为:每一次排序过程,通过相邻元素的交换,将当前没有排好序中的最大(小)移到数组的最右(左)端。而选择排序的思想也很直观:每一次排序过程,我们获取当前没有排好序中的最大(小)的元素和数组最右(左)端的元素交换,循环这个过程即可实现对整个数组排序。 
    选择排序的平均时间复杂度比冒泡排序稍高,下面我们使用GO语言进行编写

    冒泡排序

    func bubble(num []int64) []int64 {
        flag := true
        for i := len(num) - 1; i >= 0; i-- {
            for j := 0; j < i; j++ {
                //冒泡,泡沫往上越大,较大的数上移
                if num[j] > num[j + 1] {
                    Swap(num, j, j + 1)
                    flag=false
                }
            }
            //优化不必要的交换
            if flag {
                break
            }
        }
    
        return num
    }
    
    
    
    func Swap(num []int64, i int, j int) {
        temp := num[i]
        num[i] = num[j]
        num[j] = temp
    }

    选择排序

    func Select(num []int64) []int64 {
        for i := 0; i < len(num) - 2; i++ {
            min:=num[i]
            local:= i
            for j := i + 1; j <= len(num)-1; j++ {
                if min>num[j] {
                    min=num[j]
                    local=j
                }
            }
            Swap(num,local,i)
        }
        return num
    }
    
    func Swap(num []int64, i int, j int) {
        temp := num[i]
        num[i] = num[j]
        num[j] = temp
    }
    package main
    
    import "fmt"
    import "./sel"
    //变量在前,类型在后
    func main() {
        num :=[]int64{11, 5, 25, 3, 42, 27,53,82,11, 2}
        //bub.bubble(num)
        sel.Select(num)
        for i ,_:=range num {
            fmt.Print(i)
        }
    }
  • 相关阅读:
    React组件二
    React组件一
    React新接触
    清除浮动的方法
    div section article aside的理解
    html引入外部的jswenjian
    绘制扇形,空心文字,实心文字,颜色线性 放射性渐变
    绘制扇形空心 实心文字 ,颜色线性渐变,颜色放射性渐变
    绘制圆弧的几种简单方法
    求两个有序数组的中位数
  • 原文地址:https://www.cnblogs.com/xxzhuang/p/7274791.html
Copyright © 2011-2022 走看看