专栏首页【从零开始学习Go语言】【从零开始学习Go语言】十.基础算法之冒泡排序

【从零开始学习Go语言】十.基础算法之冒泡排序

【从零开始学习Go语言】十.基础算法之冒泡排序

  • 借用菜鸟教程中的一张图

冒泡排序,顾名思义就是像冒泡一样进行排序,那么是怎么个冒泡法呢?

举个例子说明一下,比如有一个数组:[3 2 1 0],需要将该数组进行升序排序,即排序成:[0 1 2 3]。

冒泡排序是这样进行排序的,首先将第一个元素和第二个元素进行比较,如果第一个元素比第二个元素大,那么将这两个元素交换位置,比如这里的第一个元素是3,第二个元素是2,那么第一次排序后,数组变成:[2 3 1 0],3往后移动了一位,然后重复刚刚的步骤,将第二个元素和第三也进行比较,数组变成:[2 1 3 0],再将第三个元素和最后一个元素重复之前的比较,数组变成:[2 1 0 3]。

发现了吗?最大的元素3像一个泡泡一样,慢慢“冒”出来了,数组变化过程如下:

 [3 2 1 0] -> [2 3 1 0] -> [2 1 3 0] -> [2 1 0 3]

找出最大的元素后,重复刚刚的步骤,继续找第二大的元素,数组变化过程如下:

 [2 1 0 3] -> [1 2 0 3] -> [1 0 2 3]

第二大的元素2,也慢慢“冒”出,继续找第三大元素,数组变化过程如下:

[1 0 2 3] -> [0 1 2 3]

第三大元素1也“冒”出来了,到此,排序结束,这就是冒泡排序的由来。当然,冒泡排序还有其它的实现方式,这里简单学习

写这篇文章的目的只有一个:再简单的算法,不自己动手试试,是不会明白的。

附上go实现的冒泡排序代码:

package main

import "fmt"

func main() {
	array := []int{3, 2, 1, 0}
	fmt.Printf("      array: %v\n", array)
	bubbleSort(array)
	fmt.Printf("bubble sort: %v\n", array)
}
func bubbleSort(array []int) {
	size := len(array)
	for i := 0; i < size-1; i++ {
		for j := 0; j < size-1-i; j++ {
			if array[j] > array[j+1] {
				array[j], array[j+1] = array[j+1], array[j]
			}
		}
	}
}

运行结果:

array: [3 2 1 0]
bubble sort: [0 1 2 3]

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【从零开始学习Go语言】八.Go语言的数组切片引用类型与值类型(总结)

    所谓多维数组或二维数组,其实就是一个数组中嵌套另一个数组,注意数组设置的长度不包括二维数组或多维数组的长度。结构大概如下:

    一只特立独行的兔先生
  • 【从零开始学习Go语言】八.Go语言的数组切片引用类型与值类型(总结)

    所谓多维数组或二维数组,其实就是一个数组中嵌套另一个数组,注意数组设置的长度不包括二维数组或多维数组的长度。结构大概如下:

    一只特立独行的兔先生
  • 【kali Linux 的1024种玩法】一.在VMware Workstation上安装Kali Linux 2020.1(超详细!)

    VMware Workstation是一款功能强大的桌面虚拟软件。它允许用户在单一的桌面上同时运行不同的操作系统,您可以根据您本地实际的情况去下载不同操作系统的...

    一只特立独行的兔先生
  • 冒泡排序

    songleo
  • python学习之元组 字典 列表及运算符

    1.4 元组里面可以包含各种类型的数据:整数 浮点数 字符串 布尔值(True False) 元组 等

    吾爱乐享
  • 数据结构学习笔记——总述

    数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及它们之间的关系和操作等相关问题的学科。

    蜻蜓队长
  • Python 变量之列表与应用技巧

          Python 定义了一些标准数据类型,用于存储各种类型的数据。Python有五个标准的数据类型,分别是:

    py3study
  • 为未来学习3 - 工具:自省表介绍

    爱因斯坦也不总是对的,就工作和个人成长而言,我并不认同他的说法。工作本身就是一再的重复,但是这种重复的确会有不同的结果。同样是十年的软件开发,同样是十万行代码经...

    py3study
  • 机器学习--多标签softmax + cross-entropy交叉熵损失函数详解及反向传播中的梯度求导

    https://blog.csdn.net/oBrightLamp/article/details/84069835

    用户1148525
  • Python3 列表

    列表的切分和字符串基本一样,但是列表在切分时,只要输入了’:’,不管结果有几个元素,都会返回一个列表.

    py3study

扫码关注云+社区

领取腾讯云代金券