在升序排序的数组中插入一个元素

来源:互联网 发布:淘宝店铺排行榜怎么看 编辑:程序博客网 时间:2024/05/01 12:37

用函数编程实现在一个按升序排序的数组中查找x应插入的位置,将x插入数组中,使数组元素仍按升序排列。

提示:插入(Insertion)是数组的基本操作之一。插入法排序算法的关键在于要找到正确的插入位置,然后依次移动插入位置及其后的所有元素,腾出这个位置放入待插入的元素。插入排序的原理如图所示:

程序运行结果示例:

Input array size:

5↙

Input array:

1 3 5 7 9↙

Input x:

4↙

After insert 4:

   1   3   4   5   7   9

输入格式:

插入前数组元素个数、数组元素、待插入的元素x的输入格式都是:"%d"

输出格式:

输入插入前数组元素个数提示信息:"Input array size:\n"

输入插入前已按升序排序的数组元素提示信息:"Input array:\n"

输入待插入的元素x提示信息:"Input x:\n"

输出插入x后的数组元素提示信息:"After insert %d:\n"

数组元素输出格式:"%4d"

输入样例:

输出样例:

时间限制:500ms内存限制:32000kb


#include<stdio.h>
int main(){
int n,x,i;
printf("Input array size:\n");
scanf("%d",&n);
int a[n+1];
printf("Input array:\n");
for(i=0;i<n;i++)
    scanf("%d",&a[i]);
printf("Input x:\n");
scanf("%d",&x);
int pos;
for(i=0;i<n;i++){
    if(x<a[i]){pos=i;break;}




}
//printf("%d",pos);
for(i=n;i>=pos;i--){
    a[i]=a[i-1];


}
a[pos]=x;
printf("After insert %d:\n");
for(i=0;i<=n;i++)
    printf("%4d",a[i]);


return 0;}

0 0
原创粉丝点击