直接插入排序:
指每次從無序表中取出第乙個元素,把它插入到有序表的合適位置,使有序表仍然有序。
1.首先在當前有序區array[1..i-1]中查詢array[i]的正確插入位置j(1≤j≤i-1);
for(j = i-1; j >= 0 && array[j] > temp; j --)
temp為儲存的array[i];將array中 j 後的記錄均後移乙個位置,騰出j位置上的空間插入array[i]。
//找到目標位置,放入
array[j]=temp;
system.out.print("\n第"+x+"趟:");
for(int a:array)}}
public
static
void
main(string args)
;system.out.print("初始:"+" ");
for(int a:array)
button button=new button();
button.charu(array);
system.out.print("\n最終:"+" ");
如果是乙個有序遞增的序列,只需要比較,不需要移動
o(n)
如果為遞減序列,每次比較後,還必須依次移動
o(n^2)
若有兩個相同的數,排序前後,相對位置不變
所以穩定;
希爾排序:
把待排序的資料元素分成若干個小組,對同一小組內的資料元素用直接插入法排序,小組的個數逐次縮小,當完成了所有資料元素都在乙個組內的排序後,排序過程結束。
1,a[0]-a[n-1];待排序陣列
2 ,b[0]-b[num-1];排序增量陣列;
過程:
public
class s
a[y+tmpe]=abc;}}
system.out.println("第"+(i+1)+"趟:"+"增量為"+tmpe+" ");
for(int m=0;mout.print(a[m]+" ");
}system.out.println();
}
}public
static
void
main(string args)
;int len=arr.length;
system.out.print("初始:");
for(int i=0;iout.print(arr[i]+" ");
}system.out.println();
int brr=;
int size=brr.length;
new s(). shell(arr,len,brr,size);
system.out.print("排序後:");
插入排序演算法
插入排序演算法 思想 把排序過程看作是序列單個有序擴充套件為整體有序的過程,即首先取序列第二個元素與第乙個元素比較,將其插入合適位置,再將第三個元素與前兩個元素比較,將其插入合適位置,如此進行,直到最後取第n個元素與前n 1個元素進行比較並將其插入合適位置。演算法 建立日期 2004 12 14 插...
演算法 插入排序
include include 插入排序 n 2為的效率。具體思想 將陣列分為兩部分,一部分是有序的,一部分為無序的 然後從無序中選取乙個數插入在有序的數中的恰當的位置,以此迭代,直到無序的數全部遍厲完畢 void insert sort int a,int n a j tmp break retu...
插入排序演算法
下面這段話摘自 一般來說,插入排序都採用in place在陣列上實現。具體演算法描述如下 從第乙個元素開始,該元素可以認為已經被排序 取出下乙個元素,在已經排序的元素序列中從後向前掃瞄 如果該元素 已排序 大於新元素,將該元素移到下一位置 重複步驟3,直到找到已排序的元素小於或者等於新元素的位置 將...