赞
踩
内容大多引用菜鸟教程,写完了才发现教程讲的非常详细,我这里只针对python的代码实现
排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存
名词解释:
(1)当输入的数据已经是正序时,就不需要冒泡排序了
(2)当输入的数据是反序时,写一个 for 循环反序输出数据就行,没必要麻烦的用冒泡排序
def bubble_sort(nums):
for i in range(1, len(nums) - 1): # 设置冒泡排序进行的次数
for j in range(0, len(nums) - i): # j为列表下标
if nums[j] > nums[j + 1]:
nums[j], nums[j + 1] = nums[j + 1], nums[j] #交换两值
return nums
print(bubble_sort([45, 32, 8, 33, 12, 22, 19, 97]))
# 输出:[8, 12, 19, 22, 32, 33, 45, 97]
数据规模越小越好
def selectionSort(nuns):
for i in range(len(nums) - 1):
# 记录最小数的索引
minIndex = i
for j in range(i + 1, len(nums)):
if nums[j] < nums[minIndex]:
minIndex = j
# i 不是最小数时,将 i 和最小数进行交换
if i != minIndex:
nums[i], nums[minIndex] = nums[minIndex], nums[i]
return nums
(1)当输入的数据已经是正序时,需要进行的比较操作是 (n-1)次
(2)当输入的数据是反序时,需要进行的比较共有n(n-1)/2次
def insertionSort(nums):
for i in range(len(nums)):
preIndex = i-1
current = nums[i] # 保存当前元素值,拿前面的值和它比较
while preIndex >= 0 and nums[preIndex] > current:
nums[preIndex+1] = nums
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。