插入排序

什么是插入排序:


如 1 2 6 5 4

第1步:1不動

第2步:2比1大 2不動

第3步:6比2大 6不動

第4步:5比6小,交換5和6的位置,5比2大,5的位置不動

變成12564

第5步:4比6小,交換4和6的位置,5比4大,交換4和5的位置,4比2大,所以位置不動

最后結(jié)果12456

代碼

public class sort {

public? static? void main(String args[])

{

int array[]={1,24,3424,2,4,1,242,556,34,23,5,13,4};

? ? ? ? array=paixu(array);

? ? ? ? for(int i=0;i

{

System.out.println(array[i]);

? ? ? ? }

}

public static int[]paixu(int [] array)

{

int exchange=0;

? ? ? ? for(int i=1;i

{

for(int j=i-1;j>=0&&array[j]>array[j+1];j--)

{

exchange=array[j+1];

? ? ? ? ? ? ? ? ? ? array[j+1]=array[j];

? ? ? ? ? ? ? ? ? ? array[j]=exchange;

? ? ? ? ? ? }

}

return? array;

? ? }

}



插入排序也有缺點就是其每次比較大小后都要進行交換,一次交換是3次賦值,影響效率??梢宰兂梢淮钨x值,如:用變量保存第i個元素的值,如果前一個元素比后一個元素大,則前一個元素移到后一個元素位置,一直到小于為止,將變量的值賦給該位置元素,這樣會大大提高效率


如 1 2 6 5 4

第1步:1不動

第2步:2比1大 2不動

第3步:6比2大 6不動

第4步:5比6小,用x保存5,將6賦值給5的位置,5比2大,將x的值賦值

變成12564

第5步:4比6小,用x保存4,將6的值賦給4的位置,5比4大,將5的值賦給6的位置,4比2大,所以將x的值賦給空余的位置。

最后結(jié)果12456



public class sort {

public? static? void main(String args[])

{

int array[]={1,24,3424,2,4,1,242,556,34,23,5,13,4};

? ? ? ? array=paixu(array);

? ? ? ? for(int i=0;i

{

System.out.println(array[i]);

? ? ? ? }

}

public static int[]paixu(int [] array)

{

int j;

? ? ? ? int exchange;

? ? ? ? for(int i=1;i

{

exchange=array[i];

? ? ? ? ? ? for (j=i;j>0 &&array[j-1]>exchange;j--)

{

array[j]=array[j-1];

? ? ? ? ? ? }

array[j]=exchange;

? ? ? ? }

return? array;

? ? }

}



對于相對有序數(shù)組,插入排序效率要高,時間復(fù)雜度為on2

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容