Python|每日一练|气泡法|冒泡法|map函数|非sort方法:冒泡排序

冒泡排序

题目:

用冒泡排序编写一个函数,允许接受多个数字的输入,不使用sort方法,给数字从小到大排序,最终输出从小到大的列表。

气泡法(冒泡法)排序

详见:Python-冒泡排序法_冒泡排序python可以吗_Hacker-666的博客-CSDN博客

气泡法(冒泡法)排序是一种计算机科学领域的较简单的排序算法

请在以下选项中选择

A

#  File "E:/BLOG/python_day/python_day_code/A.py", line 7, in bubbleSort
#     arr[j], arr[j/1] = arr[j/1], arr[j]
# TypeError: list indices must be integers or slices, not float

#!/usr/bin/python3
def bubbleSort(arr):
    n = len(arr)
    for i in range(n):
        for j in range(0, n-i-1):
            if arr[j] > arr[j+1] :
                #应为: arr[j], arr[j+1] = arr[j+1], arr[j]
                arr[j], arr[j/1] = arr[j/1], arr[j]
x=input("请输入数字,空格分隔:")
xlist=x.split(" ")
arr = [int(xlist[i]) for i in range(len(xlist))]
bubbleSort(arr)
print ("排序后的数组:")
for i in range(len(arr)):
    print ("%d" %arr[i]),

B 正确答案

def bubbleSort(arr):
    n = len(arr)
    for i in range(n):
        for j in range(0, n-i-1):
            #将最尾部的数据与之前的数据循环顺次比较,如果前面的数据较大,则交换2个数据
            #保证较小的数字永远位于前面,形象的表示为较轻的气泡自动上浮
            if arr[j] > arr[j+1] :
                arr[j], arr[j+1] = arr[j+1], arr[j]
#题目给定方法,可以将数字转换为字符串列表
x=input("请输入数字,空格分隔:")
xlist=x.split(" ")
arr = [int(xlist[i]) for i in range(len(xlist))]
#也可以采用map函数简化数据的输入及处理
#arr=list(map(int,input("请输入数字,空格分隔:").strip().split()))
bubbleSort(arr)
print ("排序后的数组:")
for i in range(len(arr)):
    print ("%d" %arr[i]),

C

#排序有误

            #应为:if arr[j] > arr[j+1] :
           
if arr[j] == arr[j+1] :

def bubbleSort(arr):
    n = len(arr)
    for i in range(n):
        for j in range(0, n-i-1):
            #应为:if arr[j] > arr[j+1] :
            if arr[j] == arr[j+1] :
                arr[j], arr[j+1] = arr[j+1], arr[j]
x=input("请输入数字,空格分隔:")
xlist=x.split(" ")
arr = [int(xlist[i]) for i in range(len(xlist))]
bubbleSort(arr)
print ("排序后的数组:")
for i in range(len(arr)):
    print ("%d" %arr[i]),

D

#  File "E:/BLOG/python_day/python_day_code/D.py", line 6, in bubbleSort
#     if arr[j] > arr[j+1] :
# IndexError: list index out of range

def bubbleSort(arr):
    n = len(arr)
    for i in range(n):
        #for j in range(0, n-i-1):
        for j in range(0, n+i+1):
            if arr[j] > arr[j+1] :
                arr[j], arr[j+1] = arr[j+1], arr[j]
x=input("请输入数字,空格分隔:")
xlist=x.split(" ")
arr = [int(xlist[i]) for i in range(len(xlist))]
bubbleSort(arr)
print ("排序后的数组:")
for i in range(len(arr)):
    print ("%d" %arr[i]),

你可能感兴趣的:(每日一练,python,算法,排序算法,冒泡法)