程序如下,不明白的地方就追问吧!
#include
void sort_up(int *p,int len);
void insert(int *p,int len);
int main(){
int i,a,b,n,idx,buf[255];
printf("请输入数组元素初始个数n\n");
scanf("%d",&n);
for(i=0;i
scanf("%d",&buf[i]);
}
while(1){
printf("\n排序请选-->(1)\n插入请选-->(2)\n退出请选-->(0)\n");
scanf("%d",&idx);
if(idx==0) break;
else if(idx==1) sort_up(buf,n);
else if(idx==2) insert(buf,++n);
else{
printf("输入错误,请重新输入!\n");
continue;
}
}
return 0;
}
void insert(int *p,int len)
{
int temp;
printf("请输入要插入的元素...\n");
scanf("%d",&temp);
*(p+len-1)=temp;
sort_up(p,len);
}
void sort_up(int *p,int len)
{
int i,j,temp;
for(i=0;i
temp=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=temp;
}
}
}
printf("操作后的结果为...\n");
for(i=0;i
}
}
排序的代码有很多,经典的代码网上很多,套用就可以,两层循环加判断交换
很简单
插入也不难,就是放到数组的最后,和前一个判断,如果小了,两个交换,直到不交换了退出循环
#include
#define MAX 1024
void sort(int *a, int n)
{
int i,j, tmp;
for (i=0; i
for (j=i+1; j
if (a[i]>a[j])
{
tmp = a[i];
a[i] = a[j];
a[j] = tmp;
}
}
}
}
void insert(int *a, int n, int m)
{
int i, j;
if a[0]>=m)
{
for (j=n-1; j>i; j--)
{
a[j+1] = a[j];
}
a[0] = m;
return;
}
for (i=0; i
if (a[i]<=m && m<=a[i+1])
{
for (j=n-1; j>i; j--)
{
a[j+1] = a[j];
}
break;
}
}
a[i+1] = m;
}
int main(void)
{
int n, m, a[MAX], i;
scanf("%d", &n);
for (i=0; i
scanf("%d", &a[i]);
}
sort(a, n); //排序
scanf("%d", &m);
insert(a, n, m); // 插入数字
for (i=0; i
printf("%d ", a[i]);
}
printf("\n");
return 0;
}