陣列的第乙個元素預設為有序,則將此陣列分為兩部分,第一部分為有序部分,初始時只有乙個元素,除第乙個元素之外的其它元素均為無序元素,稱之為待排序部分;
將待排序部分的第乙個元素,與已排好序的元素從後往前相比較,先設定乙個關鍵字保留待排序部分的值,如果關鍵字的值比有序部分的最後乙個元素數值大,則不必移動元素,預設為有序,有序部分元素個數加一;
如果關鍵字的數值比有序部分的最後乙個數值小,則將有序部分的元素依次往後移動,直到關鍵字的值比有序部分的某一位元素的值大為止,然後將此關鍵字插入;
每一次排序,有序部分的元素個數就增加乙個,待排序部分的元素就相對減少,直到無序部分的元素個數為零,則排序結束此時得到乙個有序序列
是一種穩定排序
時間複雜度
平均值為o(n^2)
最壞情況下為o(n^2)
最好情況下為o(n)
空間複雜度為o(1)(即只需要乙個空間儲存關鍵字)
public
class demo03 ; //待排序的陣列
int j;
for(int i = 1;i < a.length;i++)
a[j+1] = temp; //將temp中的值插入有序陣列中已找到的位置}}
for(int i = 0;i < a.length;i++)
}}
直接插入排序運用的思想較為簡單,**也不複雜,運用陣列,可以簡單快速的實現這一排序演算法
Java排序演算法 直接插入排序
基本思想 直接插入排序的基本操作是將乙個記錄插入到已經排好的有序表中,從而得到乙個新的 記錄數增1的有序表。對於給定的一組記錄,初始時假定第乙個記錄自成乙個有序序列,其餘記錄為無序序列。接著從第二個記錄開始,按照記錄的大小依次將當前處理的記錄插入到其之前的有序序列中,直到最後乙個記錄插到有序序列中為...
java演算法 直接插入排序
話不多說,直接上 package sort public class sorttest seqlist seqlist new seqlist 20 for int i 0 i d.length i seqlist.display seqlist.insertsort seqlist.insert ...
java插入排序 直接插入排序
直接插入排序演算法思路是 待排序記錄 r1,r2,rn 1,rn 第一步 將無序表打第乙個元素作為乙個有序表。第二步 將r2加入到有序表中,使有序表依舊有序 第 n 步 r1,r2,rn 1 rn 以此類推。直接插入排序演算法的時間複雜度,最好的情況是待排序記錄是有序的,o n 最壞打情況是記錄從大...