插入排序演算法

2021-07-28 02:11:57 字數 1980 閱讀 9237

直接插入排序

指每次從無序表中取出第乙個元素,把它插入到有序表的合適位置,使有序表仍然有序。

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,直到找到已排序的元素小於或者等於新元素的位置 將...