选择排序-Python实现

简单选择排序,两两比较大小,找出极值,(极大值和极小值)被放置在固定位置的某一端。结果分为升序和降序。

 

1)     先确定最大的索引,然后比较。index

简单选择排序总结:

需要数据的一轮轮比较,并在每一轮中发现极值。

没有办法知道当前轮是否已经达到排序要求,但是可以知道极值。

遍历次数1,。。。N-1之和n(n-1)/2

时间复杂程度O(n(**2))。

减少了交换次数,提高了效率,性能略好于冒泡法

1、#选择排序

#两两比较首先找到最大数或最小数,放在一侧,然后找出次大数。

#利用索引

 

#选择排序
l = [1,5,7,8,9,0,2,4,3,6]
length = len(l)
for i in range(length):
    maxindex = i
    for j in range(i+1,length):
        if l[maxindex] < l[j]:
            maxindex = j

    if i != maxindex:
        (l[maxindex],l[i]) = (l[i],l[maxindex])

print(l)

 

list2 = [3,9,0,1,5,7,2,4,8,6]

count = 0

count_swap = 0

length = len(list2)

for i in range(length//2):

    maxindex = i

    minindex = -i -1

    mignate = minindex

    for j in range(i+1,length-i):

        count += 1

        if list2[maxindex] < list2[j]:

            maxindex = j

 

        if list2[minindex] > list2[-j -1]:

            minindex = -j-1

 

    #最大值和最小值一样大,说明数值相等

    if list2[minindex] == list2[maxindex]:

        break

 

    if i != maxindex:

        (list2[i],list2[maxindex]) = (list2[maxindex],list2[i])

        count_swap += 1

 

        if i == maxindex or i == length + minindex:

            minindex = maxindex

 

    if mignate != minindex:

        (list2[mignate],list2[minindex]) = (list2[minindex],list2[mignate])

        count_swap += 1

 

print(list2,count,count_swap)

posted @ 2018-11-12 16:18  Python爱好者666  阅读(199)  评论(0)    收藏  举报