利用數(shù)組對任意一組數(shù)據(jù)進(jìn)行插入法排序
大家都知道奉呛,數(shù)組是一種數(shù)據(jù)結(jié)構(gòu),它的優(yōu)勢就是能讓同一類數(shù)據(jù)或者說是多個數(shù)組元素放在一個數(shù)組里,而便于對它們進(jìn)行操作战坤。數(shù)組又可分為數(shù)值數(shù)組莲镣、字符數(shù)組福稳、指針數(shù)組、結(jié)構(gòu)數(shù)組等各種類別瑞侮。
<一維數(shù)組的定義方式>
類型說明符 數(shù)組名 [常量表達(dá)式]
<插入法>
插入的基本思想是的圆,從第二個數(shù)開始,插入到前面的有序數(shù)列里半火。例如越妈,當(dāng)我們輸入四個數(shù):5、2钮糖、4梅掠、1,那么從第二個數(shù)店归,也就是2開始瓤檐,用它與前面的5比較大小,因為2比5小娱节,所以順序相調(diào)挠蛉,變成了2、5肄满、 4 谴古、1,再讓第三個數(shù)7與前面的有序數(shù)比較稠歉,則變成2掰担、4、 5 怒炸、1带饱,以此類推就變成了1 、2阅羹、4勺疼、 5,這樣就完成工作啦捏鱼!
具體代碼如下:
#include <stdio.h>
int main(int argc,char *argv[])
{
int n=6;
int i=0;
int j=0;
int a[j];
int temp=0;
printf("input your numbers:");
//從鍵盤上鍵入五個數(shù)到數(shù)組所在地址
for(j=0;j<n;j++)
scanf("%d",&a[j]);
/*從數(shù)組里的第二個數(shù)開始执庐,用它與前面的有序數(shù)比較,形成從小到大的順序,對于一組數(shù)據(jù)的排序导梆,需要循環(huán)n-1次轨淌,每次
比較j-1次*/
for(i=1;i<n;i++)
{
for(j=i;j>=0;j--)
{
if(a[j-1]>=a[j])
{
temp=a[j-1];
a[j-1]=a[j];
a[j]=temp;
}
}
//輸出排好序的順序
}
for(j=0;j<n;j++)
printf("%d\n",a[j]);
return 0;
}
總結(jié)
- 插入法也是一種經(jīng)典的排序方法迂烁,與冒泡法類似,都是在還未排好序的數(shù)字里面選出最小數(shù)(其實也可以選出最大的數(shù))递鹉,最終達(dá)到排序的結(jié)果盟步;
- 在用數(shù)組作為待處理數(shù)據(jù)時,要用for循環(huán)構(gòu)架結(jié)構(gòu)數(shù)據(jù)躏结,同時排好序的數(shù)字用函數(shù)printf輸出時也要用for循環(huán)址芯,但是這個循環(huán)的位置要注意!(本人把這個輸出過程放在了循環(huán)體內(nèi)窜觉,這樣就會輸出n-1次結(jié)果谷炸,當(dāng)然只有最后那次是正確的)。