一、选择排序
①排序原理
选择排序就是将数组中的元素进行一一对比,对比出数组中最小的数将其排至第一位,然后从集合中第二个元素开始重复之前的对比,将次小值排至第二位,然后重复这一方法直至将集合中全部元素从小至大全部拍好。
②动图演示
③代码展示
arr = [8,3,2,6,1,4,9,7]
for i in range(0,len(arr)):
for j in range(i+1,len(arr)):
if arr[i] >= arr[j]:
arr[i],arr[j] = arr[j],arr[i]
print(arr)
二、冒泡排序
①排序原理
比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。针对所有的元素重复以上的步骤,除了最后一个,直到没有任何一对数字需要比较。
②动图演示
③代码展示
arr = [8,3,2,6,1,4,9,7] # [3 2 6 1 4 8 9 7]
for i in range(0,len(arr)-1):
for j in range(0,len(arr)-1-i):
if arr[j] >= arr[j+1]:
arr[j],arr[j+1] = arr[j+1],arr[j]
print(arr)
三、插入排序
①排序原理
插入排序就是在待排序的元素中,将需要排序的数插入到前面已经排好的序列中,然后找到合适自己的位置,使得插入这个数之后的这个序列也是排好顺序的。按照此法对所有元素进行插入,直到整个序列排为有序的过程。插入排序就像摸牌。比如你手中有两张比好大小的牌,小的放在左边,大的放在右边,你继续摸牌,将摸到的牌的大小与手中两张牌比较并放入这两张牌的左边,中间或右边。继续摸排,比较,插入,直至最后一张牌。
②动图演示
③代码展示
arr = [8,3,2,6,1,4,9,7]
for i in range(1,len(arr)):
for j in range(i,0,-1):
if arr[j] <= arr[j-1]:
arr[j],arr[j-1] = arr[j-1],arr[j]
print(arr)
三、计数排序
①排序原理
计数排序也可称之为桶排序,其基本思想是对于给定的输入序列中的每一个元素x,确定该序列中值小于x的元素的个数,然后将x直接存放到最终的输出序列的正确位置上。我们可以把元素的范围比作一个桶,然后创造同元素个数相同的桶,将各个元素放到对应的桶中,实现排序。
②动图演示
③代码展示
arr = [7,3,2,0,1,2,3,6]
max_num = arr[0]
min_num = arr[0]
for num in arr:
if num > max_num:
max_num = num
elif num < min_num:
min_num = num
# print(max_num)
# print(min_num)
#计数列表的长度
len_arr1 = max_num - min_num + 1
#偏移量
offset = min_num
#初始化计数列表 元素全为0
arr1 = [0] * len_arr1
#排序后的列表
arr2 = [0] * len(arr)
#计数
for num in arr: # 7,3,2,0,1,2,3,6
print(num)
arr1[num-offset] += 1 # 0 0 0 0 0 0 0
print(arr1)
index = 0
for i in range(0,len_arr1):
for j in range(0,arr1[i]):
print(i+offset,end=" ")
arr2[index] = i + offset
index += 1
print()
print(arr2)