共計 1061 個字符,預計需要花費 3 分鐘才能閱讀完成。
這篇文章主要介紹了 java 如何實現插入排序算法,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓丸趣 TV 小編帶著大家一起了解一下。
插入排序,這種排序在平時生活中很常見,打撲克時拿到凌亂的手牌捋順序,整理手上大大小小的鈔票等等。
插入即是將目標元素插入到已經排序好的元素之中。
所以需要兩層循環。第一層循環取各個為排序的元素,第二層循環將要排序的元素插入到正確的位置。
這么說好像挺簡單。其實對于第二層循環將元素插入到正確的位置。我覺得有兩種方法。第一種,將要插入的元素使用冒泡的方法兩兩比較循環找到正確的位置,另一種是比較要排序的元素和各個已經排序的元素,得到正確的角標,最后實現插入。
對于第一種方法,感覺這不像是插入,因為他循環比較并且是通過移動獲得正確的位置的。第二種方法由于只是比較大小,最后通過插入到正確的位置而結束。效率比第一種提高一倍。
那么看代碼實現吧
第一種實現,效率地下
@Override
public void sort(int[] a) {
int len=a.length;
for(int i=1;i i++){ // 首先是最外層循環,表示插入多少次
int j=i-1;// 已經排序好的部分的右端點
while(j =0 SortUtils.less(a[j+1], a[j])){// 開始比較
SortUtils.exch(a, j, j+1);// 交換要排序的元素和已經排序好的元素
j--;
}
第二種實現,效率較高
@Override
public void sort(int[] a) {
int len=a.length;
for(int i=1;i i++){ // 首先是最外層循環,表示插入多少次
int j=i-1;// 已經排序好的部分的右端點
int e=a[i];// 首先將要排序的元素儲存起來
while(j =0 SortUtils.less(e, a[j])){// 開始比較
a[j+1]=a[j]; // 單單移動元素,比上面一種方法快捷
j--; // 循環找到要排序元素的正確位置 j+1
a[j+1]=e;
// 為什么是 j+1
// 因為內層 while 循環結束條件是找到第一個比要插入元素小的數組元素, 這個元素的角標即是 j
// 所以要插入元素的正確位置就是 j+1
}
感謝你能夠認真閱讀完這篇文章,希望丸趣 TV 小編分享的“java 如何實現插入排序算法”這篇文章對大家有幫助,同時也希望大家多多支持丸趣 TV,關注丸趣 TV 行業資訊頻道,更多相關知識等著你來學習!
正文完