java實現插入排序演算法

2021-07-24 10:07:12 字數 940 閱讀 8398

主要思想就是從第二個元素開始,依次和前面的元素比較,如果比前面的元素小則將元素依次向後移位,給需要插入的元素騰出空間。與選擇排序類似的是當前索引左邊的所有元素都是有序的,但是它們最終的位置不確定,因為後面可能還會出現更小或更大的元素。所以為了給更小或更大的元素騰出空間,它們隨時都可能被移動。如果到達了陣列的右端時,陣列順序就完成了。

演算法導論例子:

排序方式像我們打牌時排序手中的撲克牌,開始時,我們手中的撲克牌為空,我們從牌堆中拿到第一張牌到手中,然後在不停的抓牌中,從右到左的比較手中每一張牌,左手中的牌總是排序好的,所以從第二張牌開始左手中的牌就是有序的,一直到抓完牌堆中的牌。

插入排序所需的時間取決於輸入中元素的初始順序。如果初始順序基本有序,那麼排序就會快很多。然後在鍵不重複的前提下,最壞情況(就是需要正序排序,結果陣列裡面的元素都是逆序的):(n-1)+(n-2)+...............+2+1=n^2/2次比較和交換。最好情況:就是直接比較一遍,無需交換。就是比較n-1次,交換0次。

public static void printarr(int objarr) 

}public static int insertsort(int arr) else

j--;

}arr[j+1] = insertvalue;

}return arr;

}public static void main(string args) ;

insertsort(arr);

printarr(arr);

}

結果:

Java實現插入排序演算法

插入排序適用於有初步排序的序列。對於乙個n元素的序列而言,最好的情況是序列已經是公升序排列的了,只需要比較n 1次 最壞的情況是初始序列逆序,那麼將進行n n 1 2次比較,即插入排序演算法複雜度最好為 o n 最差跟平均為 o n 2 以字串的形式讀入乙個整數序列,轉換後以插入排序實現公升序排列 ...

插入排序演算法Java實現

插入排序的思想是迴圈陣列中每乙個元素,然後將這些元素依次插入到乙個有序的數列中去,實現陣列的排序,也就是說迴圈到的當前元素索引的左側都是已經排好序的,針對當前元素,將它依次與相鄰的左側元素比較,小於左側就兩個交換,迴圈比較和交換的過程,直至元素大於左側相鄰元素,或者是該元素已被交換至最左側。實現如下...

java實現插入排序演算法

定義乙個資料類,主要是定義一些常用的方法,方便以後寫別的排序時和插入排序使用同樣的資料,比較下演算法的執行時間。public class datasource return dataarray public static void logs string plog 定義乙個插入排序的類,主要負責對給...