java插入排序演算法實現

2021-09-10 22:54:05 字數 915 閱讀 4952

一,插入排序介紹

插入排序是基於比較的排序。所謂的基於比較,就是通過比較陣列中的元素,看誰大誰小,根據結果來調整元素的位置。

因此,對於這類排序,就有兩種基本的操作:①比較操作; ②交換操作

其中,對於交換操作,可以優化成移動操作,即不直接進行兩個元素的交換,還是用乙個樞軸元素(tmp)將當前元素先儲存起來,然後執行移動操作,待確定了最終位置後,再將當前元素放入合適的位置。(下面的插入排序就用到了這個技巧)--因為,交換操作需要三次賦值,而移動操作只需要一次賦值

有些排序演算法,比較次數比較多,而移動次數比較少,而有些則相反。比如,歸併排序和快速排序,前者移動次數比較多,而後者比較次數比較多。

這裡主要介紹插入排序

二,插入排序演算法分析

插入排序演算法有種遞迴的思想在裡面,它由n-1趟排序組成。初始時,只考慮陣列下標0處的元素,只有乙個元素,顯然是有序的。

然後第一趟 對下標 1 處的元素進行排序,保證陣列[0,1]上的元素有序;

第二趟 對下標 2 處的元素進行排序,保證陣列[0,2]上的元素有序;

第n-1趟對下標 n-1 處的元素進行排序,保證陣列[0,n-1]上的元素有序,也就是整個陣列有序了。

它的遞迴思想就體現在:當對位置 i 處的元素進行排序時,[0,i-1]上的元素一定是已經有序的了。

public class insertsort

a[j] = tmp;//插入到合適的位置}}

//for test purpose

public static void main(string args) ;

insertsort(arr);

for (integer i : arr)

}}

Java實現插入排序演算法

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

java實現插入排序演算法

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

插入排序演算法Java實現

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