您好,登錄后才能下訂單哦!
這篇文章運用簡單易懂的例子給大家介紹java代碼和偽代碼實現插入排序的方法,代碼非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
插入排序介紹:
相信大部分人都打過撲克牌,許多人喜歡發一張牌就拿一張牌到手上,并且按順序來放好牌。開始時我們左手為空,牌在桌子上。然后我們每次從桌子上拿走一張牌并將它插入左手中的位置。為了找到一張牌的正確位置,我們從右到左將它與已在手中的每張牌進行比較。
偽代碼:
INSERTION-SORT(A) //A是數組 for j = 2 to A.length key = A[j] //(將A[j]插入排序序列A[1..j-1]) i = j - 1 while i > 0 and A[i] > key A[i+1] = A[i] i = i - 1 A[i+1] = key
java代碼:
//升序排序 public void InsertSortAscending(int[] A){ for(int j = 1;j < A.length;j++){ int key = A[j]; //將A[j]插入排序序列A[1..j-1] int i = j - 1; while(i >= 0 && A[i] > key){ A[j+1] = A[i]; i = i - 1; } A[i+1] = key; } }
下面我們來看一下插入排序的運行步驟
用數組A[2,4,7,1,3,6]來舉例子
每次for循環中,黃色的長方形是A[j]的值,在第7行的while循環中將它與其左邊的藍色的長方形中的值進行比較。藍色的箭頭指出數組在第8行向右移動一個位置,黃色的箭頭指出第11行關鍵字被移到的地方。
第一次循環:如下圖所示:
第二次循環:如下圖所示:
注意:這里A[2]大于A[1],因為A[1]肯定是大于A[0]的所以沒必要在比較A[2]與A[1]的大小。while循環因不滿足條件會退出。
第三次循環:如下圖所示:
第四次循環:如下圖所示:
第五次循環:如下圖所示:
A數組此時如圖所示:
第六次循環時j為6不滿足循環j<A.length條件,循環退出。
關于java代碼和偽代碼實現插入排序的方法就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。