排序算法——冒泡排序

1、算法介绍

(1)比较相邻的两个元素,前面元素比后面元素大,则交换两个元素;两个元素相等不交换(稳定);

(2)一趟比较后得到最大元素,对前面未排好序的序列重复步骤(1)

(3)循环排序结束或排序过程中无交换则排序完成

2、代码实现

2.1、golang

package main

import (
	"fmt"
)

func main() {
	slice := []int{5, 3, 12, 54, 23, 12, 6, 9, 19}
	SortBubble(slice)
	fmt.Println(slice)
}

//冒泡排序
func SortBubble(slice []int) {
	n := len(slice)
	isEnd := true //无交换,排序结束
	for i := 0; i < n-1; i++ {
		isEnd = true
		for j := 0; j < n-i-1; j++ {
			if slice[j] > slice[j+1] {
				slice[j], slice[j+1] = slice[j+1], slice[j]
				isEnd = false
			}
		}
		if isEnd {
			break
		}
	}
}

2.2、python3

# 冒泡排序
def sort_bubble(arr):
    n = len(arr)
    isEnd = True
    for i in range(n-1):
        isEnd = True
        for j in range(n-i-1):
            if arr[j] > arr[j+1]:
                arr[j], arr[j+1] = arr[j+1], arr[j]
                isEnd = False
        if isEnd:
            break


if __name__ == '__main__':
    arr = [5, 3, 12, 54, 23, 12, 6, 9, 19]
    sort_bubble(arr)
    print(arr)