首先必須明確這個(gè)有序數(shù)組是升序還是降序的。然后編寫一個(gè)有序插入函數(shù)。在主函數(shù)中三次讀入整數(shù),并調(diào)用插入函數(shù)就可以實(shí)現(xiàn)這個(gè)功能。
創(chuàng)新互聯(lián)公司是專業(yè)的新市網(wǎng)站建設(shè)公司,新市接單;提供成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì),網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行新市網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!
void insert(int a[],int*n,int x)//在有n個(gè)元素的升序數(shù)組a中插入元素x
{int i;
for(i=n-1;i=0a[i]x;i--)
a[i+1]=a[i];
a[i+1]=x;
(*n)++;
}
調(diào)用語句:
for(i=0;i3;i++)
{scanf("%d",x);
insert(a,n,x);
}
這還要怎么解釋。很明白了。
先把輸入的數(shù)排序,然后找到插入x的位置,然后把x之后的都往后挪動(dòng)一個(gè)。就完成了
修改insert函數(shù)中的for語句如下:
for(i=N-1;i=pos;i--)
{
x[i+1]=x[i];
}
你往數(shù)組中插入了一個(gè)新的值,數(shù)組的長度增加了1,所以返回N+1咯,這樣就能在接下來的輸出中使用這個(gè)新值N
int insertX(int *pa,int n,int x)
{
int i,k;
for(i=0;in;i++)
if (pa[i]x) break;
for(k=n;ki;k--)
pa[k]=pa[k-1];
pa[i]=x;
return(0);
}
void main()
{
int a[100]={0,1,2,3,4,6,8,9,10};
int i;
insertX(a,9,5);
for(i=0;i10;i++)
printf ("%4d",a[i]);
}
源程序如下:
#define _CRT_SECURE_NO_WARNINGS
#includestdio.h
int main()
{
int i, j, t, k;//定義循環(huán)變量
const int n = 10;//定義數(shù)組元素個(gè)數(shù)
int a[n], b[n + 1];//定義兩個(gè)數(shù)組
printf("您喜歡的有序數(shù)組:\n");//輸入數(shù)組序列文字提
for (i = 0; i n; i++)
{
scanf("%d", a[i]);//循環(huán)輸入數(shù)組元素
}
printf("請輸入想插入的數(shù)字\n");//輸入要插入的數(shù)字
scanf("%d", k);
for (i = 0; i = n; i++)//循環(huán)遍歷
{
if (i == n) b[i] = k;//如果走到最后都沒有地方插入就放在最后
else b[i] = 0;
}
for (i = 0; i n; i++)//循環(huán)遍歷
{
for (j = 0; j n; j++)
{
b[j] = a[i++];//依次將數(shù)組a付給b
}
}
for (j = 0; j n; j++)//冒泡排序,將數(shù)組數(shù)列排好
{
for (i = 0; i n - j; i++)
{
if (b[i] b[i + 1])
{
t = b[i];
b[i] = b[i + 1];
b[i + 1] = t;
}
}
}
for (j = 0; j n + 1; j++)//順序輸出
{
printf("%d ", b[j]);
}
}
程序輸出結(jié)果如下:
擴(kuò)展資料:
/*#includestdio.h//感覺用二分法不錯(cuò) 直接插入排序也不錯(cuò)
//插入函數(shù) 往有序的數(shù)組a里插入值為element的元素使數(shù)組a依然有序?
//算法思想大概就是從頭開始遍歷找到第一個(gè)大于element的數(shù) 然后插入 然后后面的元素依次移動(dòng)。
void insert_array(int *a,int length,int element)
{ ?
int i,j,t,f; ?
for(i=0;ilength;i++) ?
{ ? ?
if(a[i]element) ? ? ??
{ ? ??
t=i;//找到位置以后 可以依次移動(dòng)數(shù)組元素騰出位置了 ? ? ?
for(j=length;j=t;j--) ? ? ? ? ?
{ ? ? ? ? ? ? ??
if(j==t) ? ? ? ?
a[j]=element; ? ? ?
else ? ? ? ? ? ? ?
a[j]=a[j-1];//數(shù)組依次往后移動(dòng),不管正序還是倒序都可以
} ?
f=1; ??
break; ? ??
} ? ? ? ? ? ? ?
} ?
if(f!=1)//當(dāng)element大于所有數(shù)組元素時(shí)候 ??
{ ? ??
a[length]=element; ??
} ?
for(i=0;ilength+1;i++) ?
{ ??
printf("%d ",a[i]);?
}?
}
int main()
{?
int a[5]={1,2,3,5,6};?
int e=7; ?
insert_array(a,5,e);
}
1、可以用下面代碼把數(shù)插入一個(gè)排好序的數(shù)組,數(shù)組進(jìn)行迭代取值。
2、下面是數(shù)組排序的代碼,這里是按大小排序的,每次取值和輸入的數(shù)比較,比輸入的數(shù)小,就往后移動(dòng)移位,直到移出輸入數(shù)該放的位置,反之也是。
3、或者用下圖的代碼實(shí)現(xiàn),有一個(gè)已排好序的數(shù)組,現(xiàn)在插入一個(gè)數(shù)字。
4、按原來已排好的排序規(guī)律將它插入數(shù)組,i++循環(huán)比較簡單。
本文題目:c語言函數(shù)插入有序數(shù)組,數(shù)組逆序存放c語言
本文路徑:http://aaarwkj.com/article42/dsigcec.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(wǎng)站建設(shè)、電子商務(wù)、商城網(wǎng)站、Google、網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)