算法图解---选择排序

     **选择排序是一种灵巧的算法,但其速度不是很快**。
    它每遍历一次列表只交换一次数据,即进行一次遍历时找到最大的项,完成遍历后,再把它换到正确的位置。第一次遍历后,最大的数据项就已归位,第二次遍历使次大项归位。这个过程持续进行,一共需要n-1次遍历来排好n个数据,因为最后一个数据必须在第n-1次遍历之后才能归位。 
#寻找列表中最小元素的函数
def findSmallest(alist):
  smallest = alist[0] 
  smallest_index = 0   #最小元素的索引
  for i in range(1, len(arr)):
    if alist[i] < smallest:
        smallest = alist[i]
        smallest_index = i
  return smallest_index
  
#选择排序算法(从小到大)
def selectionSort(alist):
  newAlist = [] #定义一个新的列表
  for i in range(len(alist)):
    smallest = findSmallest(alist) # 调用findSallest函数,找出列表中最小的数值
    newAlist.append(arr.pop(smallest)) #将最小值加入新的列表中,pop() 函数用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
  return newAlist
print (selectionSort([5, 3, 6, 2, 10]) )
# 选择排序(从大到小)
def selectionSort(alist):
    for i in range(len(alist)-1,0,-1):
        Max_index=0   #最大元素的索引
        for j in range(1,i+1):
            if alist[j]<alist[Max_index]:
                Max_index =j
        temp = alist[i]
        alist[i] = alist[Max_index]
        alist[Max_index] = temp
alist=[5,3,6,2,10]
selectionSort(alist)
print(alist)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值