python3排序算法,python二次排序
选择方法的动态图如下:
关于选择排序算法的思考;
选择排序算法的思路是:
1.从第一个数字开始遍历以找到最小的数字,然后用第一个数字交换最小的数字
2.从第二个数字开始遍历,找到最小的数字,将最小的数字与第二个数字交换。
3.从第三个数字开始遍历,找到最小的数字,并与第三个数字交换最小的数字。
…
n个周期后,从小到大的排序码完成如下:最坏的情况下,
def select_sort(数据):
对于范围内的I(len(datas)):
min_index=i
对于范围内的j(I ^ 1,len(datas)):
if datas[j] datas[min_index]:
min_index=j
if min_index!=我:
数据[最小索引],数据[i]=数据[I],数据[最小索引]
打印(f 第{i 1}次选择和排序后的结果:,数据)
返回数据
if __name__==__main__ :
数据=[10,9,8,7,6,5,4,3,2,1,0]
Datas=select_sort(datas)执行结果如下:
第一次选择排序后的结果:[0,9,8,7,6,5,4,3,2,1,10]
第二次选择排序后的结果:[0,1,8,7,6,5,4,3,2,9,10]
第三次选择排序后的结果:[0,1,2,7,6,5,4,3,8,9,10]
第四次选择排序后的结果:[0,1,2,3,6,5,4,7,8,9,10]
第五次选择排序后的结果:[0,1,2,3,4,5,6,7,8,9,10]
第六次选择排序后的结果:[0,1,2,3,4,5,6,7,8,9,10]
第7次选择排序后的结果:[0,1,2,3,4,5,6,7,8,9,10]
第八次选择排序后的结果:[0,1,2,3,4,5,6,7,8,9,10]
第9次选择排序后的结果:[0,1,2,3,4,5,6,7,8,9,10]
第十次选择排序后的结果:[0,1,2,3,4,5,6,7,8,9,10]
第11次选择排序后的结果:最佳情况下:[0,1,2,3,4,5,6,7,8,9,10]:
def select_sort(数据):
对于范围内的I(len(datas)):
min_index=i
对于范围内的j(I ^ 1,len(datas)):
if datas[j] datas[min_index]:
min_index=j
if min_index!=我:
数据[最小索引],数据[i]=数据[I],数据[最小索引]
打印(f 第{i 1}次选择和排序后的结果:,数据)
返回数据
if __name__==__main__ :
数据=[0,1,2,3,4,5,6,7,8,9,10]
datas=select_sort(datas)的执行结果如下:可以看出,即使已经排序,仍然需要反复寻找最小的数,也就是在最好的情况下,时间复杂度仍然是n2。
第一次选择排序后的结果:[0,1,2,3,4,5,6,7,8,9,10]
第二次选择排序后的结果:[0,1,2,3,4,5,6,7,8,9,10]
第三次选择排序后的结果:[0,1,2,3,4,5,6,7,8,9,10]
第四次选择排序后的结果:[0,1,2,3,4,5,6,7,8,9,10]
第五次选择排序后的结果:[0,1,2,3,4,5,6,7,8,9,10]
第六次选择排序后的结果:[0,1,2,3,4,5,6,7,8,9,10]
第7次选择排序后的结果:[0,1,2,3,4,5,6,7,8,9,10]
第八次选择排序后的结果:[0,1,2,3,4,5,6,7,8,9,10]
第9次选择排序后的结果:[0,1,2,3,4,5,6,7,8,9,10]
第十次选择排序后的结果:[0,1,2,3,4,5,6,7,8,9,10]
第11次选择排序后的结果:[0,1,2,3,4,5,6,7,8,9,10]
转载请联系作者取得转载授权,否则将追究法律责任。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。