直接插入排序演算法
(從後向前找到合適的位置後插入,穩定排序演算法)
基本思想:每一步將乙個待排序的記錄,按其順序碼大小插入到前面已經排序的子串行合適位置(從後向前找到合適位置後),直到全部插入排序完為止。
假如有這樣乙個陣列:[86,54,23,7,90,48,11,66],從小到大排:
我們假設,86為基準,其他數插入86前面或後面。
先插入54:首先54下標i是1,數值temp是54,現在只有86和54比較。86比54大,把下標1的數54換為86,就變為[86,86,23,7,90,48,11,66],然後86是基準,前面沒數了,54就變成了第乙個[54,86,23,7,90,48,11,66];
第二是23:此時下標是2,temp是23,現在86先和23比較,需要調換位置,變為[54,86,86,7,90,48,11,66],此時i=2的86前面還有數字54,就讓23與54比較,23還是小於54,就有:[54,54,86,7,90,48,11,66],前面到頭了,23就變成了第乙個數,把第乙個54替換(nums[0] = temp;):[23,54,86,7,90,48,11,66];
第三是7,原理與23相同。[7,23,54,86,90,48,11,66];
第四是90,90和86比較,90大,不需往左比較,放在86右面即可。[7,23,54,86,90,48,11,66];
第五是temp=48,此時,現在最大排出來的數是90,將48與90比,48小於90,把90放在48的位置上[7,23,54,86,90,90,11,66],接著讓48跟86比,48小於86,把86提到右邊[7,23,54,86,86,90,11,66],54再跟48比,48小,54提到右邊[7,23,54,54,86,90,11,66],23跟48比,48大,把左邊的54替換成48即可(nums[2] = temp;)[7,23,48,54,86,90,11,66];
第六與第七跟上面說的相同,在此不再贅述。
**實現:
public class a
; int len = nums.length;
int temp, max;
//控制比較的輪數
for(int i = 1; i < len; i++)//元素第乙個不需要比較,拿來做基準
else//否則比較數沒有被比較數大,被比較數左邊的數都沒有比較數大,此時這個比較數是最大的,直接break掉
break;
}if(nums[j+1] != temp)//這個元素不等於自己就交換位置
nums[j+1] = temp;
} //輸出結果
for(int x : nums)
system.out.print(x+" ");
}}
Java 直接插入排序
直接插入排序就是直接將乙個數插入到有序的 序列中,對於陣列n,可你看作是兩個序列,第乙個序列是陣列的第乙個元素,第二個序列是原陣列,將第二個序列依次插入到第乙個序列中,下面實現 方法 sort方法是將乙個元素讓入到有序數列中,insertsort方法是對整個陣列的操作 public class in...
Java 直接插入排序
直接插入排序是一種最簡單的排序演算法,在後續我會繼續發布其他的簡單排序 直接插入的演算法基本思想是 僅有乙個元素的序列總是有序的,因此,對n個記錄的序列,可從第二個元素開始直接到第n個元素,逐個向有序序列中執行插入操作,從而得到n個元素按關鍵字有序的序列。一般來說,在含有j 1個元素的有序序列中插入...
java 直接插入排序
直接插入排序是指 將乙個新記錄插入到已經排好序的列表中 他的具體操作是 如果乙個資料比它前面的資料要小,則將該資料向前移動。直接插入排序 author 半知半行 public static void straightinsertionsort int sorts else sorts pos t 測...