冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。
这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。
它重复的访问需要排序的元素列,并依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。以下是图片详解:
Python 代码
存在列表:[5, 0, 1, 6, 3, 2, 9, 8, 7, 10, 4, 11]
# 冒泡排序
list1 = [5, 0, 1, 6, 3, 2, 9, 8, 7, 10, 4, 11]
def bubble_sort(sort):
# 遍历列表
for l in range(length := len(sort)):
# 遍历比较前后两个元素
for s in range(length):
# 若排序错误,则进行交换
if s + 1 < length and sort[s] > sort[s + 1]:
sort[s], sort[s + 1] = sort[s + 1], sort[s]
return sort
print(bubble_sort(list1))
返回结果:
TypeScript 代码
存在列表:[5, 0, 1, 6, 3, 2, 9, 8, 7, 10, 4, 11]
// 冒泡排序
let list1 = [5, 0, 1, 6, 3, 2, 9, 8, 7, 10, 4, 11]
function bubbleSort(sort: number[]) {
let length = sort.length
// 遍历列表
for (let num: number = 0; num < length; num++) {
// 遍历比较前后两个元素
for (let value: number = 0; value < length; value++) {
// 若排序错误,则进行交换
if (value + 1 < length && sort[value] > sort[value + 1]) {
let val = sort[value]
sort[value] = sort[value + 1]
sort[value + 1] = val
}
}
}
return sort
}
console.log(bubbleSort(list1))
返回结果:
GoLang 代码
存在列表:[5, 0, 1, 6, 3, 2, 9, 8, 7, 10, 4, 11]
package main
import "fmt"
func main() {
fmt.Println(Array())
}
func Array() []int {
// 存在列表
list := [] int{5, 0, 1, 6, 3, 2, 9, 8, 7, 10, 4, 11}
// 遍历列表
for i := 0; i < len(list); i++ {
// 遍历比较前后两个元素
for j := 0; j < len(list); j++ {
// 若排序错误,则进行交换
if j + 1 < len(list) && list[j] > list[j+1] {
k := list[j]
list[j] = list[j+1]
list[j+1] = k
}
}
}
return list
}
返回结果:
Java 代码
存在列表:[5, 0, 1, 6, 3, 2, 9, 8, 7, 10, 4, 11]
package main;
import java.util.Arrays;
public class test {
public static void main(String[] args) throws Exception {
// 数组转换
System.out.println(Arrays.toString(Array()));
}
public static int[] Array() throws Exception {
// 存在数组
int[] list = {5, 0, 1, 6, 3, 2, 9, 8, 7, 10, 4, 11};
// 遍历列表
for (int i = 0; i < list.length; i++) {
// 遍历比较前后两个元素
for (int j = 0; j < list.length; j++) {
// 若排序错误,则进行交换
if (j+1 < list.length && list[j] > list[j+1]) {
int k = list[j];
list[j] = list[j+1];
list[j+1] = k;
}
}
}
return list;
}
}
返回结果: