声明:
本文给出选择排序、插入排序、冒泡排序算法的Python实现方法和运行结果;
代码有问题或疑惑下方评论,有错勿喷;更多大学简单算法的实现进我博客;
1. 选择排序 selection_sort
程序代码
A = [12,56,92,-1,5,110,92,999,-39,21,76,33,56]
print('初始数据为:');print(A)
n = len(A)
i = 0
k = 0
j = 0
while i <= n-1:
while j <= n-1:
if A[i] > A[j]:
temp = A[i]
A[i] = A[j]
A[j] = temp
j = j+1
else:
j = j+1
k = k+1
i = i+1
j = k
print(A)
print('排序结果为:')
print(A)
运行结果
初始数据为:
[12, 56, 92, -1, 5, 110, 92, 999, -39, 21, 76, 33, 56]
排序过程为:
[-39, 56, 92, 12, 5, 110, 92, 999, -1, 21, 76, 33, 56]
[-39, -1, 92, 56, 12, 110, 92, 999, 5, 21, 76, 33, 56]
[-39, -1, 5, 92, 56, 110, 92, 999, 12, 21, 76, 33, 56]
[-39, -1, 5, 12, 92, 110, 92, 999, 56, 21, 76, 33, 56]
[-39, -1, 5, 12, 21, 110, 92, 999, 92, 56, 76, 33, 56]
[-39, -1, 5, 12, 21, 33, 110, 999, 92, 92, 76, 56, 56]
[-39, -1, 5, 12, 21, 33, 56, 999, 110, 92, 92, 76, 56]
[-39, -1, 5, 12, 21, 33, 56, 56, 999, 110, 92, 92, 76]
[-39, -1, 5, 12, 21, 33, 56, 56, 76, 999, 110, 92, 92]
[-39, -1, 5, 12, 21, 33, 56, 56, 76, 92, 999, 110, 92]
[-39, -1, 5, 12, 21, 33, 56, 56, 76, 92, 92, 999, 110]
[-39, -1, 5, 12, 21, 33, 56, 56, 76, 92, 92, 110, 999]
[-39, -1, 5, 12, 21, 33, 56, 56, 76, 92, 92, 110, 999]
排序结果为:
[-39, -1, 5, 12, 21, 33, 56, 56, 76, 92, 92, 110, 999]
2. 插入排序 insertion_sort
程序代码
A = [12,56,92,-1,5,110,92,999,-39,21,76,33,56]
print('初始数据为:')
print(A)
n = len(A)
i = 0
j = 0
while i <= n-1:
x = A[i]
j = i - 1
while j > -1 and A[j] > x:
A[j+1] = A[j]
j = j - 1
A[j+1] = x
i = i + 1
print(A)
print('排序结果为:')
print(A)
运行结果
初始数据为:
[12, 56, 92, -1, 5, 110, 92, 999, -39, 21, 76, 33, 56]
排序过程为:
[12, 56, 92, -1, 5, 110, 92, 999, -39, 21, 76, 33, 56]
[12, 56, 92, -1, 5, 110, 92, 999, -39, 21, 76, 33, 56]
[12, 56, 92, -1, 5, 110, 92, 999, -39, 21, 76, 33, 56]
[-1, 12, 56, 92, 5, 110, 92, 999, -39, 21, 76, 33, 56]
[-1, 5, 12, 56, 92, 110, 92, 999, -39, 21, 76, 33, 56]
[-1, 5, 12, 56, 92, 110, 92, 999, -39, 21, 76, 33, 56]
[-1, 5, 12, 56, 92, 92, 110, 999, -39, 21, 76, 33, 56]
[-1, 5, 12, 56, 92, 92, 110, 999, -39, 21, 76, 33, 56]
[-39, -1, 5, 12, 56, 92, 92, 110, 999, 21, 76, 33, 56]
[-39, -1, 5, 12, 21, 56, 92, 92, 110, 999, 76, 33, 56]
[-39, -1, 5, 12, 21, 56, 76, 92, 92, 110, 999, 33, 56]
[-39, -1, 5, 12, 21, 33, 56, 76, 92, 92, 110, 999, 56]
[-39, -1, 5, 12, 21, 33, 56, 56, 76, 92, 92, 110, 999]
排序结果为:
[-39, -1, 5, 12, 21, 33, 56, 56, 76, 92, 92, 110, 999]
3. 冒泡排序 bubble_sort
程序代码
A = [12,56,92,-1,5,110,92,999,-39,21,76,33,56]
print('您的初始数据为:')
print(A);print('\n'*1)
n = len(A)
i = 0
j = n-1
while i <= n-1:
while j != i:
if A[j] > A[i]:
temp = A[i]
A[i] = A[j]
A[j] = temp
j = j - 1
else:
j = j - 1
j = n -1
i = i + 1
print(A)
print('\n'*1)
print('冒泡排序的结果:')
print(A)
A.reverse()
print('取倒序后数据为:')
print(A)
运行结果
您的初始数据为:
[12, 56, 92, -1, 5, 110, 92, 999, -39, 21, 76, 33, 56]
[999, 56, 92, -1, 5, 110, 92, 76, -39, 21, 56, 33, 12]
[999, 110, 92, -1, 5, 92, 76, 56, -39, 21, 56, 33, 12]
[999, 110, 92, -1, 5, 92, 76, 56, -39, 21, 56, 33, 12]
[999, 110, 92, 92, 5, 76, 56, 56, -39, 21, 33, 12, -1]
[999, 110, 92, 92, 76, 56, 56, 33, -39, 21, 12, 5, -1]
[999, 110, 92, 92, 76, 56, 56, 33, -39, 21, 12, 5, -1]
[999, 110, 92, 92, 76, 56, 56, 33, -39, 21, 12, 5, -1]
[999, 110, 92, 92, 76, 56, 56, 33, -39, 21, 12, 5, -1]
[999, 110, 92, 92, 76, 56, 56, 33, 21, 12, 5, -1, -39]
[999, 110, 92, 92, 76, 56, 56, 33, 21, 12, 5, -1, -39]
[999, 110, 92, 92, 76, 56, 56, 33, 21, 12, 5, -1, -39]
[999, 110, 92, 92, 76, 56, 56, 33, 21, 12, 5, -1, -39]
[999, 110, 92, 92, 76, 56, 56, 33, 21, 12, 5, -1, -39]
冒泡排序的结果:
[999, 110, 92, 92, 76, 56, 56, 33, 21, 12, 5, -1, -39]
取倒序后数据为:
[-39, -1, 5, 12, 21, 33, 56, 56, 76, 92, 92, 110, 999]