python演算法-選擇排序

來源:互聯網
上載者:User

標籤:第一個   sel   時間   選擇排序   str   定位   python   style   int   

選擇排序:

一、語言描述:從一列數字中依次選出最小的放第一位,次小的放第二位,依次類推完成整個排序

  1. 第一次遍曆,找到最小的數字,放在第一個位置
  2. 第二次遍曆,找到第二大的數字,放在第二個位置
  3. ...... 以此類推,完成整個排序

固定位置,找元素

  1. 對於n個元素的數組,從第一個位置開始,找到最小,放在第一個位置
  2. 從第二個位置開始,剩下的數組中,找到最小,放在第二個位置
  3. ....
  4. 從第n-1個位置開始,在剩下的數組中,找到最小,放在第n-1個位置

 

代碼實現:

# encoding=utf-8

 

def selectSort(listx):

    xLen = len(listx)

    for i in xrange(xLen):

        min = i

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

            if listx[min] > listx[j]:

                min = j

        listx[i],listx[min] = listx[min],listx[i]

    return listx

 

if __name__ == ‘__main__‘:

    print selectSort([32,34,55,66,5])

 

習題一:修改成降序排列

 

#enconding = utf-8

 

def Select_Sort(lista):

    for i in xrange(len(lista)):

        min = i

        for j in xrange(i+1,len(lista)):

            if (lista[min] < lista[j]):

                min = j

        lista[min],lista[i] = lista[i],lista[min]

    return lista

 

if __name__ == ‘__main__‘:

    print Select_Sort([32,14,67,8,21])

 

習題2:代碼是否存在不必要的比較,是否可以減去,說出原因

 

# encoding=utf-8

 

def selectSort(listx):

    xLen = len(listx)

    for i in xrange(xLen-1):

        min = i

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

            if listx[min] > listx[j]:

                min = j

        listx[i],listx[min] = listx[min],listx[i]

    return listx

 

if __name__ == ‘__main__‘:

    print selectSort([32,34,55,66,5])

 

 

二、計算時間複雜度

32,34,55,66,5

第一輪:5,32,34,55,66   n-1次

第二輪:5,32,34,55,66    n-2次

...

第五輪:5,,32,34,55,66   1次

1+2+3+... +n-2+ n-1 = n(n-1)/2

時間複雜度為 O(n^2)

python演算法-選擇排序

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.