插入排序-Python實現


1、直接插入排序

直接插入排序原理。

在未排序的序列中,構建一個子排序序列,直至全部數據按照要求排序完成。

將待排序的數,插入到已經排序的序列中合適的位置。

增加一個哨兵,放入待比較值,讓他和后面已經排好序的序列比較,插入合適的地方。

2、原理

增加一個哨兵位,每輪比較將待比較數放入。

哨兵依次和待比較的前一個數據比較,大的數靠右移動,找到哨兵中的值插入位置.

每一輪結束后,得到一個從開始到待比較數的位置的一個有序序列。

3、總結

最好情況,正好是升序排列,比較迭代n-1次。

最差情況,正好是降序排列,比較迭代1,2,,.....n-1即n(n-1)/2

使用兩層嵌套循環,時間復雜度O(n**2)

穩定排序算法。

使用在小規模數據比較

優化點:

如果比較操作耗時大的話,可以采用二分查找的方式來提高效率。(查找是在已經排序的區域).  if判斷加上循環。

4、#插入排序

#思路,增加一個哨兵崗位,數據依次和哨兵崗位比較,大數右移,直到放到合適為止。

 

 

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

nums = [0] + list3

length = len(nums)

count = 0

count_swap = 0

for i in range(2,length):

    nums[0] = nums[i]

    j = i -1  #前一個數的索引

    count += 1

    if nums[j] > nums[0]:

        while nums[j] > nums[0]:  #大數右移

            nums[j+1] = nums[j]   #依次右移

            j -= 1   #右移幾次就要減去幾次

            count_swap += 1

        nums[j+1] = nums[0] #在插入右側+1

        

 


免責聲明!

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



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