直接插入排序比较次数_插入排序(C++)
關于插入排序的例子網上有很多,這里只是為了加深理解,做個簡單的記錄,方便以后回顧。
一、代碼圖片(升序排序)
二、實現思路
1. 插入排序是將未排序的數據插入到已經排序的數據中。其實仔細發現其實插入排序是冒泡排序的改進版,冒泡排序是從頭開始向后面比較,基本上每次都要從頭比較到尾部,而插入排序從后向前比較,我們從第二個元素開始向前比較,當遇到一個大于他的數時,就將該數向后移動一位,然后繼續向前比較知道遇到不大于他的數停止,然后從第三個元素開始重復上面的操作知道最后一個元素。這樣明顯的降低了比較的次數,是冒泡排序的進化版。效率任然為O(N^2) --->最壞的情況是完全倒序,此時比較次數就和冒泡排序一樣。(插入排序的好處在于他無需從后向前比較到最前面的元素,只需要比較到第一個小于他的數就可以停止了,因為前面是有序的所以前面的數都肯定小于他)
2. 元素移動展示
3. 插入排序,一般也被稱為直接插入排序。對于少量元素的排序,它是一個有效的算法。應用場景適合規模不大于1000。
三、復雜度分析
時間復雜度
在插入排序中,當待排序數組是有序時,是最優的情況,只需當前數跟前一個數比較一下就可以了,這時一共需要比較N- 1次,時間復雜度為O(N)。
最壞的情況是待排序數組是逆序的,此時需要比較次數最多,總次數記為:1+2+3+…+N-1,所以,插入排序最壞情況下的時間復雜度為O(N2)。
平均來說,A[1..j-1]中的一半元素小于A[j],一半元素大于A[j]。插入排序在平均情況運行時間與最壞情況運行時間一樣,是輸入規模的二次函數。
空間復雜度
插入排序的空間復雜度為常數階 O(1)。
未完。。。
總結
以上是生活随笔為你收集整理的直接插入排序比较次数_插入排序(C++)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php mysql记录用户行为_PHP实
- 下一篇: python声音分类_Python音频信