[排序算法]:冒泡排序

python 和 golang 实现 bubble sort

冒泡排序:对于列表中相邻的2个数,比较大小,将较大的那个数放到后面,这样每跑一趟就能从无序区拿到1个最大的数(类似于冒了一个气泡上来)。这样我们只需要跑 n-1 趟,就能完成所有数的排列。

> python

def bubble_sort_up(data_list):
    """ 冒泡排序,升序版 """
    for i in range(1, len(data_list), 1):               # 一共 n-1 趟
        for j in range(0, len(data_list) - i, 1):       # 前数的下标从 0 - (n-1)-j
            if data_list[j] > data_list[j + 1]:
                data_list[j], data_list[j + 1] = data_list[j + 1], data_list[j]
            else:
                continue
    return data_list


# 元素数据
temp = [273, 21, 31, 7, 9, 0, 93, -12, 3]
# 排序后的数据
print(bubble_sort_up(temp))


# [运行结果如下]:#####################
"""
[-12, 0, 3, 7, 9, 21, 31, 93, 273]
"""
# ####################################


def bubble_sort_down(data_list):
    """ 冒泡排序,降序版 """
    for i in range(1, len(data_list), 1):               # 一共 n-1 趟
        for j in range(0, len(data_list) - i, 1):       # 前数的下标从 0 - (n-1)-j
            if data_list[j] < data_list[j + 1]:
                data_list[j], data_list[j + 1] = data_list[j + 1], data_list[j]
            else:
                continue
    return data_list


# 原始数据
temp = [273, 21, 31, 7, 9, 0, 93, -12, 3]
# 排序后的数据
print(bubble_sort_down(temp))


# [运行结果如下]:#####################
"""
[273, 93, 31, 21, 9, 7, 3, 0, -12]
"""
# ####################################


> golang

package main

import (
	"fmt"
)

func BubbleSortUp(datalist []int) []int {
	// 升序版
	for i := 1; i < len(datalist); i++ {
		for j := 0; j < len(datalist)-i; j++ {
			if datalist[j] > datalist[j+1] {
				temp := datalist[j]
				datalist[j] = datalist[j+1]
				datalist[j+1] = temp
			} else {
				continue
			}
		}
	}
	return datalist
}

func main() {

	// 定义一个切片
	temp := []int{273, 21, 31, 7, 9, 0, 93, -12, 3}
	// 排序
	BubbleSortUp(temp)
	// 打印排序后的数据
	for _, value := range temp {
		fmt.Printf("%d  ", value)
	}

}


/* [运行结果如下]:########################
-12  0  3  7  9  21  31  93  273 
####################################### */


posted @ 2022-01-10 23:09  渝北小站  阅读(46)  评论(0编辑  收藏  举报