[GO]冒泡排序的原理和代码实现
Posted baylorqu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[GO]冒泡排序的原理和代码实现相关的知识,希望对你有一定的参考价值。
冒泡排序的原理:对于一个数组里所有的元素进行两两比较,发生大于则变换数组下标则为升序排序,发生小于则变换数据下标的则为降序排序
比如给定的数组为[1, -2, 3, -4],对于我们的需求,两两比较后则发生下标变换则为升序,第一次比较后,最大值3将被移动到数组为最右边,整个数组的比较次数和发生变换的次数都有规律可循
几次比较之后,整个数组将被变换为一个升序的数组
代码实现如下
package main import ( "math/rand" "time" "fmt" ) func main() { rand.Seed(time.Now().UnixNano()) var a [10]int n := len(a) fmt.Println("from ...") for i := 0; i < n; i++ { a[i] = rand.Intn(100) fmt.Printf("%d, ", a[i]) } fmt.Println(" ") for i := 0; i < n-1; i++ { for j := 0; j <n -1 -i; j++ { if a[j] > a[j+1] { a[j], a[j+1] = a[j+1], a[j] } } } fmt.Println("order to....") for i := 0; i < n; i++ { fmt.Printf("%d, ", a[i]) } }
代码执行结果如下
from ... 47, 28, 82, 47, 2, 15, 40, 15, 13, 88, order to.... 2, 13, 15, 15, 28, 40, 47, 47, 82, 88,
以上是关于[GO]冒泡排序的原理和代码实现的主要内容,如果未能解决你的问题,请参考以下文章
8种面试经典!排序详解--选择,插入,希尔,冒泡,堆排,3种快排,快排非递归,归并,归并非递归,计数(图+C语言代码+时间复杂度)