一、冒泡排序
1、冒泡排序,从前往后,两两进行比较,最大的放在最后面 2、稳定 3、时间复杂度o(n^2) 最优是不排序o(n)
def bubble(lst):
n = len(lst)
for i in range(n-1):
for j in range(n-i-1):
if lst[j] > lst[j+1]:
lst[j], lst[j + 1] = lst[j+1], lst[j]
return lst
lst = bubble([3,2,14,6])
print(lst)
二、选择排序
1、选择排序,从未排序的列表中选择最小的向已排序的列表中插入 2、不稳定 5 8 5 2
def select(nums):
n = len(nums)
for i in range(n-1):
minindex = i
for j in range(i+1, n):
if nums[minindex] > nums[j]:
minindex = j
if i != minindex:
nums[minindex], nums[i] = nums[i], nums[minindex]
return nums
lst = select([2, 1, 5, 3, 6, 9, 4])
print(lst)
插入排序
1、插入排序,从未排序的列表中向已排序的列表中插入元素,确定当前索引j,然后与已排序的列表一一对比,最终交换使得变为排序好的列表 2、稳定的 [5, 5, 2]
def insert(nums):
n = len(nums)
for i in range(1, n):
j = i
while j > 0:
if nums[j] < nums[j-1]:
nums[j], nums[j-1] = nums[j-1], nums[j]
j -= 1
else:
break
return nums
lst = insert([5, 5, 2])
print(lst)
|