当先锋百科网

首页 1 2 3 4 5 6 7

Python语言自带强大的排序功能,其中最常用的排序算法包括冒泡排序、插入排序、选择排序、快速排序等等。在本文中,我们将会介绍Python语言中的排序算法,并通过实例代码来演示如何使用Python进行排序,最终得到前20个最大或最小的数值。

# 冒泡排序算法
def bubble_sort(arr):
n = len(arr)
for i in range(n):
flag = False
for j in range(n - i - 1):
if arr[j] >arr[j + 1]:
arr[j], arr[j + 1] = arr[j + 1], arr[j]
flag = True
if not flag:
break
return arr
# 插入排序算法
def insert_sort(arr):
n = len(arr)
for i in range(1, n):
j = i
while j >0 and arr[j]< arr[j - 1]:
arr[j], arr[j - 1] = arr[j - 1], arr[j]
j -= 1
return arr
# 选择排序算法
def select_sort(arr):
n = len(arr)
for i in range(n):
min_index = i
for j in range(i + 1, n):
if arr[j]< arr[min_index]:
min_index = j
arr[i], arr[min_index] = arr[min_index], arr[i]
return arr
# 快速排序算法
def quick_sort(arr):
if len(arr)<= 1:
return arr
pivot = arr[len(arr) // 2]
left = [x for x in arr if x< pivot]
middle = [x for x in arr if x == pivot]
right = [x for x in arr if x >pivot]
return quick_sort(left) + middle + quick_sort(right)
# 测试排序算法的效率,并输出前20个最大或最小的数字
if __name__ == '__main__':
import random
import time
arr = [random.randint(1, 10000) for _ in range(100000)]
start = time.time()
result = bubble_sort(arr)
end = time.time()
print('冒泡排序所用时间:{}'.format(end - start))
print(result[0:20])
start = time.time()
result = insert_sort(arr)
end = time.time()
print('插入排序所用时间:{}'.format(end - start))
print(result[0:20])
start = time.time()
result = select_sort(arr)
end = time.time()
print('选择排序所用时间:{}'.format(end - start))
print(result[0:20])
start = time.time()
result = quick_sort(arr)
end = time.time()
print('快速排序所用时间:{}'.format(end - start))
print(result[0:20])

从上面的代码执行结果可以看出,快速排序是效率最高的排序算法,而冒泡排序是效率最低的排序算法。无论排序算法的效率如何,Python提供了不同的排序算法供我们使用,这对于数据分析和大数据处理都是非常有用的。