python 递归实现 冒泡排序

Posted on 2020-10-25 12:45  黑炽  阅读(448)  评论(0编辑  收藏  举报
 1 from random import randint
 2 
 3 
 4 def bubble_sort(number, i, j):
 5     global flag  # 只要第一次输出结果
 6 
 7     if i == len(number):  # 主要从1---len-1 是len-1次外循环 可了
 8         if flag == 0:
 9             print(number)
10             flag = 1
11         return
12     '''
13     for j in range(0, len(number) - i):
14         if number[j] > number[j + 1]:
15             swap(number, j, j + 1)'''
16     if j < len(number) - i:
17         if number[j] > number[j + 1]:
18             swap(number, j, j + 1)
19         bubble_sort(number, i, j + 1)  # 内循环 递归
20     j = 0  # 每次外循环的时候,需要从头开始循环呗
21     bubble_sort(number, i + 1, j)  # 额,这个主要对 外循环进行了递归
22 
23 
24 def swap(arr, i, j):
25     arr[i], arr[j] = arr[j], arr[i]
26 
27 
28 flag = 0
29 n = int(input('请输入元素个数: '))
30 nums = [randint(1, 101) for i in range(n)]
31 bubble_sort(nums, 1, 0)