python算法-選擇排序


核心算法:固定位置,選擇元素,即:先從序列中,找到最小的元素,放在第一個位置,之后找到第二小的元素,放在第二個元素,以此類推,就可以完成整個排序工作了。

代碼示例如下:

x=[6,3,2,7,4,9,5]                            
xLen = len(x)                                
for i in range(xLen-1):                      
    min = i                                  
    #遍歷完成之后,min就指向了最小元素的下標 
    for j in range(i+1, xLen):               
        if x[min] > x[j]:                    
            min = j                          
    #把將最小的元素值和坐標為i的元素值進行交換
    temp = x[min]                            
    x[min] = x[i]                            
    x[i] = temp                              
                                             
print(x)

返回結果:[2, 3, 4, 5, 6, 7, 9]  

代碼解釋:

內層循環:

for j in range(i+1, xLen):

            if listx[min] > listx[j]:

                min = j

i表示外層循環執行時,使用的元素坐標。此代碼使用min變量存儲的元素坐標對應的值和i坐標后的所有元素進行逐一比較,如果大於,則將min變量存儲的坐標改為j。

外層循環:

第一次循環找到最小值,第二個循環找到次小值,第三次循環找到第三小的值,以此類推循環結束就將所有值按照升序進行排序了。

代碼邏輯算法過程解析:

x=[6,3,2,7,4,9,5]
xLen = len(x)
n=0
for i in range(xLen-1):
    min = i
    print("i=%d"%i)
    #遍歷完成之后,min就指向了最小元素的下標
    for j in range(i+1, xLen):
        print("j=%d"%j)
        print("%d和%d比較大小"%(x[min],x[j]))
        if x[min] > x[j]:
            min = j
        print("min=%d"% min)
    #把將最小的元素值和坐標為i的元素值進行交換
    temp = x[min]
    x[min] = x[i]
    x[i] = temp
    n+=1
    print ("第%d次排序結果:%s"%(n,x)) 

print("最后排序結果:%s"%x)  

代碼打印結果:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM