1pyqt獲取textEdit控制元件的文字
阿新 • • 發佈:2020-12-11
插入排序
- 我們都玩過撲克牌,會將某張牌抽出來,插入到適合的位置。插入排序的當前索引的左邊的元素都是有序的,但是這個有序序列,並不是最終序列,直到索引來到陣列的最右邊位置。插入排序,可能會涉及到元素的移動。在選擇排序中,演算法的複雜度永遠是O(N*N級別的),而插入排序的時間複雜度,會根據輸入元素的初始順序而決定的。
- 如果對一個已經有序的陣列進行插入排序,那麼會立即發現,每個元素已經在自己合適的位置上了。
- 對下面陣列進行插入排序
- 第一輪,i=0;j=i+1,內層迴圈執行j–的操作,將當前元素arr[j],去與已經拍好序的左邊元素,從右至左的進行比較,若右邊arr[j]<arr[j-1]則交換這個兩個元素的位置。
- 第二輪 i=1,j=i+1,內層迴圈 從arr[2]=13開始,執行j–,在左側尋找比他小的元素,若沒有就原地不動
- 第三輪,i=2,j=i+1,內層迴圈從arr[3]=24開始,在已拍好序的右邊開始尋找,他小的元素。
-這裡直接跳到最後一輪, 當i=5時,j=i+1=6,此時arr[6]=3,內層的迴圈經過比較並交換,找到最後一個元素的合適位置
-
執行j-- ,此時j=5,arr[4]=23,arr[4]=3,繼續交換這個兩個元素,得到下圖。
-
最終 排序完畢時,
public void insertSort(int array[],int lenth){
int temp;
for(int i=0;i<lenth-1;i++){
for(int j=i+1;j>0;j--){
//比較並交換
if(array[j] < array[j-1]){
temp = array[j-1];
array[j-1] = array[j];
array[j] = temp;
}//end if
} //end for
}//end for
}