插入元素算法

题目描述:

题目描述
编写一个函数void insertAndSort(int n, int a[], int *size);,将n插入到数组a[]中,并按从小到大的顺序输出插入新数后的数组a[]。
输入要求:
第一行输入要插入的数n
第二行输入数组的元素个数size(size<=50)
第三行输入数组元素a[i]

示例输入1
52
6
32 45 353 24 234 564

示例输出1
24 32 45 52 234 353 564

示例输入2
846
10
23 543 5657 232 56 767 744 231 351 31

示例输出2
23 31 56 231 232 351 543 744 767 846 5657

算法:

思路:

预留多一个空间,插入新元素,进行排序

代码实现:
# include<stdio.h>
# include<stdlib.h>

int cmp(const void *a,const void *b){
    return *(int*)a-*(int*)b;//比较函数:从小到大
}
void insertAndSort(int n, int arr[], int *size){
    arr[*size]=n;//插入新元素
    int temp;
    //冒泡排序
    // for(int i=0;i<*size+1;i++){
    //     for(int j=i;j<*size+1;j++){
    //         if(arr[i]>arr[j]){
    //             temp=arr[i];
    //             arr[i]=arr[j];
    //             arr[j]=temp;
    //         }
    //     }
    // }
    //可以用qsort替换
    qsort(arr,*size+1,sizeof(int),cmp);
    //遍历输出
    for(int i=0;i<*size+1;i++){
        printf("%d ",arr[i]);
    }
    printf("\n");
}
int main(){
    int n,size;
    scanf("%d%d",&n,&size);
    int arr[size+1];//多预留一个空间插入元素
    for(int i=0;i<size;i++){
        scanf("%d",&arr[i]);
    }
    insertAndSort(n,arr,&size);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值