插入排序是把序列的第乙個值當做是有序的序列,把餘下的序列按照排序規則(公升序還是降序)插入到該序列中,當遍歷至序列尾部後,則形成有序序列。
例如:6 5 4 3 2
把6當做是有序序列,把餘下的序列(5,4,3,2)按照公升序插入到有序序列(6)中。
第一趟結果:5 6 4 3 2 有序序列為(5,6)
第二趟結果:4 5 6 3 2 有序序列為(4,5,6)
第三趟結果:3 4 5 6 2 有序序列為(3,4,5,6)
第四趟結果:2 3 4 5 6 結果為有序序列
時間複雜度(完全倒序):
長度為n的序列,需要n-1趟排序,而第 n趟需要移動的次數為:n次,則需要移動次數為:(n-1+1)×(n-1)/2=n×(n-1)/2,時間複雜度的量級為o(n^2)。
#include#include#includeusing namespace std;
const int c_n = 10;
void main()
; srand(time(null));
for (int i = 0; i < c_n; i++)
int temp;
for (int i = 1; i < c_n;i++)
a[j + 1] = temp;
} for (int i = 0; i < c_n; i++)
cout << a[i] << " ";
system("pause");
}
4 插入排序
插入排序的效果就像將乙個陣列模擬成兩個陣列的在選擇 插入的過程。假設在下標 i 之前的是數都已經排好了順序 0 i 1 那麼此次需要找到 i 位置的數的正確位置 k 在尋找這個位置 k 的過程中,逐個比較 i 之前排好順序的陣列,先比較最大的 i 1 位置的數 因為有序,所以 i 以前的數,i 1 ...
4 插入排序
插入排序 insertion sort 的演算法描述是一種簡單直觀的排序演算法。它的工作原理是通過構建有序序列,對於未排序資料,在已排序序列中從後向前掃瞄,找到相應位置並插入。一般來說,插入排序都採用in place在陣列上實現。具體演算法描述如下 1.從第乙個元素開始,該元素可以認為已經被排序 2...
插入排序演算法(4)
目錄 插入排序演算法原理 插入排序演算法的使用場景 插入排序演算法的實現 插入排序演算法的執行結果 在插入排序中,需要將取出的資料與其左邊的數字進行比較。就跟前面講的步驟一樣,如果左邊的數字更小,就不需要繼續比較,本輪操作到此結束,自然也不需要交換數字的位置。然而,如果取出的數字比左邊已歸位的數字都...