这里是一段防爬虫文本,请读者忽略。
本文原创首发于CSDN,作者IDYS
博客首页:https://blog.csdn.net/weixin_41633902/
本文链接:https://blog.csdn.net/weixin_41633902/article/details/107808008
未经授权,禁止转载!恶意转载,后果自负!尊重原创,远离剽窃!
简单选择排序
00. 概述
简单选择排序
属于选择排序 两两比较大小,找出极值(极大值或极小值)被放置在固定的位置,这个固定位置一般指的是 某一端 结果分为升序和降序排列 降序
n个数从左至右,索引从0
开始到n-1
,两两依次比较,记录大值索引,此轮所有数比较完毕,将 大数和索引0
数交换,如果大数就是索引0
,不交换。第二轮,从1开始比较,找到最大值,将它 和索引1
位置交换,如果它就在索引1
位置则不交换。依次类推,每次左边都会固定下一个大数。 和降序相反
01. 题目
产生一个含有二十个随机数的列表,使用简单排序的方法将其排序
02. 解析
2.1 方法一
import random
def full_of_list ( the_list) :
while True :
the_list. append( random. randint( 0 , 100 ) )
if len ( the_list) == 20 :
break
a_list = [ ]
full_of_list( a_list)
print ( a_list)
count = 0
for i in a_list:
Max = i
k = count
j = count
while k < len ( a_list) :
if a_list[ k] > Max:
Max = a_list[ k]
j = k
k += 1
if j != count:
a_list[ count] , a_list[ j] = a_list[ j] , a_list[ count]
count += 1
print ( a_list)
[22, 55, 54, 30, 97, 93, 86, 47, 59, 44, 72, 90, 29, 3, 86, 85, 19, 48, 76, 75]
[97, 93, 90, 86, 86, 85, 76, 75, 72, 59, 55, 54, 48, 47, 44, 30, 29, 22, 19, 3]
2.1 方法一
在一轮循环中,既求其最大值又求其最小值,然后将最大值放在前面,最小值放在后面 如果在某一轮循环中,最大值等于最小值那么结束循环 判断其是否交换时,直接判断其值是否不等,而不必判断其索引情况
import random
def full_of_list ( the_list) :
while True :
the_list. append( random. randint( 0 , 100 ) )
if len ( the_list) == 20 :
break
a_list = [ ]
full_of_list( a_list)
print ( a_list)
for i in range ( len ( a_list) // 2 ) :
max_index= i
min_index = - i - 1
origin_min_index = min_index
for j in range ( i+ 1 , len ( a_list) - i) :
if a_list[ j] > a_list[ max_index] :
max_index = j
if a_list[ - j- 1 ] < a_list[ min_index] :
min_index = - j- 1
if a_list[ max_index] == a_list[ min_index] :
break
if max_index != i:
a_list[ max_index] , a_list[ i] = a_list[ i] , a_list[ max_index]
if i == len ( a_list) + min_index:
min_index = max_index
if a_list[ min_index] != a_list[ origin_min_index] :
a_list[ min_index] , a_list[ origin_min_index] = a_list[ origin_min_index] , a_list[ min_index]
print ( a_list)
[99, 78, 49, 100, 42, 37, 75, 86, 61, 93, 84, 3, 92, 85, 33, 70, 20, 78, 33, 59]
[100, 99, 93, 92, 86, 85, 84, 78, 78, 75, 70, 61, 59, 49, 42, 37, 33, 33, 20, 3]
写在最后的话:
无论每个知识点的难易程度如何,我都会尽力将它描绘得足够细致 欢迎关注我的CSDN博客,IDYS’BLOG 持续更新内容 : linux基础 | 数据通信(路由交换,WLAN) | Python基础 | 云计算 如果你有什么疑问,或者是难题。欢迎评论或者私信我。你若留言,我必回复! 虽然我现在还很渺小,但我会做好每一篇内容。谢谢关注!