栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python选择、冒泡、插入排序

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python选择、冒泡、插入排序

arr=[8,3,2,6,1,4,9,7] 选择排序:代码:
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)

第一个及第二个循环:从第一个角标开始与之后顺序下每个角标比大小并交换位置

38261497 13862497
28361497 13862497
28361497 12863497
18362497 12863497
18362497 12863497
18362497 12863497
18362497

即,每次排序将最小的数优先排列于最前,每次循环可少循环一次。

冒泡排序:
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)

第一及第二个循环:j在i的循环下为[0,7)--[0,6)--[0,5).....

38261497 23614897
32861497 23614897
32681497 23164897
32618497 23146897
32614897 23146897
32614897 23146897
32614897 23146879

选中第一个角标为j,然后j和j+1比较并交换位置

即,每次循环排序使得j

插入排序:
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)

第一次及第二次循环:i和j均指向一个角标,而j是与j-1作比较的,当j-1没有数了则使i+1同时j也进入新循环

38261497 32861497
23861497

即:红色从右往左,j与j-1作比较并换位置

计数排序:
arr = [7,3,2,0,1,2,3,6]
max_num = arr[0]
min_num = arr[0]
for num in arr:
11 . 切片
python分割可迭代的对象
一个完整的切片包含两个":"
语法格式
start_index: 切片切割开始的位置
end_index:切片切割结束的位置,不包含end_index处的元素
step:步长,默认值是1,也可以取负值(从右往左的切割)
以列表 a = [0,1,2,3,4,5,6,7,8,9]为例
1、切割单个值
2、切割完整的对象
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)

arr=[7,3,2,0,1,2,3,6]

最大值k为7,则开辟一个长度为k+1,即长度为8的数列,此数列的初始值均为0

设一个走访值为i,令其走过原数列的一个值便在该值对应的新数列角标对应的值下加一。

以此类推,走完原数列后,遍历列表以此打印下数即可

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/499442.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号