python:直接插入和简单选择排序
生活随笔
收集整理的這篇文章主要介紹了
python:直接插入和简单选择排序
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. 直接插入排序
直接插入排序的基本思想:將一個記錄插入到已排序好的有序表中,從而得到一個新記錄數增加1的有序表。即:先將序列的第1個記錄看成是一個有序的子序列,然后從第2個記錄逐個進行插入,直至整個序列有序為止。
直接插入排序的時間復雜度是O(N^2)
代碼實現:
''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:857662006 尋找有志同道合的小伙伴,互幫互助, 群里還有不錯的視頻學習教程和PDF電子書! ''' def insert_sort(listNum):length = len(listNum)for i in range(1, length):j = i - 1key = listNum[i]while j >= 0:if key < listNum[j]:listNum[j + 1] = listNum[j]listNum[j] = keyj = j - 1return listNumif __name__ == '__main__':LIST = [49,38,65,97,76,13,27,49,55,4]print(insert_sort(LIST))2. 簡單選擇排序
簡單選擇排序的基本思想:每一趟從待排序的記錄中選出關鍵字最小(最大)的記錄,順序放在已排好序的子文件的最后(最前),直到全部記錄排序完畢。
時間復雜度分析:一個含有n個記錄組成的序列,需要進行n-1次掃描,第一次掃描(n-1)個記錄,第二次(n-2)個記錄……
時間復雜度為:n(n-1)/2 即 時間復雜度為O(n^2)。
代碼實現:
def simple_sort(listNum):length = len(listNum)for i in range(length-1): #一共進行的比較輪數k = i #默認設置最小值索引min = listNum[i]for j in range(i + 1, length):if listNum[j] < min:k = jmin = listNum[j]if k != i:listNum[i], listNum[k] = listNum[k], listNum[i]return listNumif __name__ == '__main__':LIST = [49,38,65,97,76,13,27,49,55,4]print(simple_sort(LIST))總結
以上是生活随笔為你收集整理的python:直接插入和简单选择排序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python中的一些“小坑”
- 下一篇: Python 爬虫浏览器伪装技术