插入元素算法

发布时间:2023年12月20日

题目描述:

题目描述
编写一个函数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);
}

文章来源:https://blog.csdn.net/Xudong_12345/article/details/135022449
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。