自学内容网 自学内容网

每日一题——第一百一十四题

题目:编写程序将一个数插入到升序数组中,使得插入后的数组仍然为升序

#include<stdio.h>
#define MAX_SIZE 1024

int insertIntoSorted(int* arr, int n, int elem);
int main() {
int arr[] = { 1, 3, 5, 7, 9 };
int n = sizeof(arr) / sizeof(arr[0]);//获取数组长度
int elem;

printf("请输入要插入的值:");
scanf_s("%d", &elem);

n = insertIntoSorted(arr, n, elem);

printf("插入后数组的值为:\n");
//打印插入后数组的值
for (int i = 0; i < n; i++)
{
printf("%d  ", arr[i]);
}

return 0;
}

/// <summary>
/// 将指定元素插入到待排序序列中
/// </summary>
/// <param name="arr">数组</param>
/// <param name="n">数组长度</param>
/// <param name="elem">插入元素</param>
/// <returns></returns>
int insertIntoSorted(int* arr, int n, int elem) 
{
if (n >= MAX_SIZE - 1) 
{
printf("数组已满,无法插入\n");
return n;
}

//找到待插入的位置
int i;
for (i = n - 1; (i >= 0&& arr[i] > elem); i--)
{
arr[i + 1] = arr[i];//当前元素后移
}
arr[i + 1] = elem;//插入新元素

return n + 1;//返回新的长度
}

原文地址:https://blog.csdn.net/weixin_45778846/article/details/142887089

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!