1、golang之冒泡排序

1、冒泡排序时间复杂度

冒泡排序的时间复杂度是O(N2)。

假设被排序的数列中有N个数。遍历一趟的时间复杂度是O(N),需要遍历多少次呢?N-1次!因此,冒泡排序的时间复杂度是O(N2)。

2、冒泡排序稳定性

冒泡排序是稳定的算法,它满足稳定算法的定义。

算法稳定性 -- 假设在数列中存在a[i]=a[j],若在排序之前,a[i]在a[j]前面;并且排序之后,a[i]仍然在a[j]前面。则这个排序算法是稳定的!

3、示例

// golang
func BubbleAsort(values []int) {
    for i := 0; i < len(values)-1; i++ {
        for j := i+1; j < len(values); j++ {
            if  values[i]>values[j]{
                values[i],values[j] = values[j],values[i]
            }
        }
    }
    fmt.Println(values)
}

  

原文地址:https://www.cnblogs.com/cbil/p/10015244.html

时间: 2024-12-17 03:48:11

1、golang之冒泡排序的相关文章

[golang] 数据结构-冒泡排序

碎碎念不能再经典的排序算法,说到排序算法大部分可能第一印象就是它了吧.记得大学时老师还花了一节课的时间进行详细解释. 原理冒泡算法(bubble sort) 是一种很简单的交换排序.每轮都从第一个元素开始,依次将较大值向后交换一位,直至整个队列有序. 复杂度和其他低效排序算法一样,平均时间复杂度是O(n^2).最好的情况就是原队列就是排列好的数组,这个时候时间复杂度就是O(n).空间复杂度为O(1),用于交换.按顺序通过比较排序的算法都是稳定的,冒泡排序也是这样. 代码 package main

golang实现冒泡排序

//BubbleSort.go package main import "fmt" func main() { values := []int{4, 93, 84, 85, 80, 37, 81, 93, 27,12} fmt.Println(values) BubbleAsort(values) BubbleZsort(values) } func BubbleAsort(values []int) { for i := 0; i < len(values)-1; i++ {

golang冒泡排序算法

用go语言实现的冒泡排序 package bubblesort func BubbleSort(values []int) { flag := true for i, size := 0, len(values); i < size; i++ { flag = true for j, end := 0, len(values)-i-1; j < end; j++ { if values[j] > values[j+1] { values[j], values[j+1] = values[

golang数据结构之冒泡排序

//BubbleSort 冒泡排序 func BubbleSort(arr *[7]int) { for i := len(arr) - 1; i >= 0; i-- { for j := i; j >= 0; j-- { if (*arr)[j] > (*arr)[i] { (*arr)[j], (*arr)[i] = (*arr)[i], (*arr)[j] } } fmt.Printf("第%d趟的结果为:%v\n", len(arr)-1-i, *arr) }

Go语言(Golang)冒泡排序

package main import ( "fmt" ) func BubbleSort(arr *[5]int) { for i := 0; i < len(arr); i++ { for j := i + 1; j < len(arr); j++ { if arr[i] > arr[j] { arr[i], arr[j] = arr[j], arr[i] } } } } func main() { arr := [5]int{1,43,5,94,90} Bubb

Golang基础学习总结

1.不支持继承 重载 ,比如C++Java的接口,接口的修改会影响整个实现改接口的类行为的修改,Go 设计者认为这一特点或许根本没用. 2.必任何函数定义必须花括号跟在函数声明后面而不能换行 如 func  funca(a int){},在Go语言中 函数也是一种类型 可以被推导  使用支持匿名函数 和闭包. 函数的返回值支持多重返回类似Python , 如果不赋值  整数类型默认 0     浮点数类型默认0.0   error类型 默认是nil 3.不用的包一定不要引入,这是Go的原则,就如

Golang(笔记) 顺序编程

package main import ( "fmt" "bufio" "io" "os" "strconv" "flag" ) var infile *string=flag.String("i","unsorted.data","File contains values for sorting") var outfile *

golang插件

本文记载下了golang插件的用法, 原文: https://code.tutsplus.com/tutorials/writing-plugins-in-go--cms-29101 这个例子使用了两个排序: 快速排序和冒泡排序,不追求算法的高效,只为了说明插件的生成和使用. 而且只在linux下,build和运行.(windows环境没有测试过, 原文在windows下要使用docker) 目录: plugins├── bubble_sort│   └── bubble_sort_plugin

golang对数组进行冒泡排序

什么是冒泡排序? 冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法. 它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成. 这个算法的名字由来是因为越大的元素会经由交换慢慢"浮"到数列的顶端,故名"冒泡排序". package main import ( "fmt" ) func main() { a := [...]