有一个已排好序的数组,要求输入一个数后,按原来的排序的规律将它插入数组中。(C程序设计习题)

如题所述

#include<stdio.h>

int* InsertNum(int *arr, int num, int arrLenght)
{
int *b = new int[arrLenght + 1];

bool isDesc = true;

for (size_t i = 0; i < arrLenght - 1; i++) //判断是否为降序
{
if (arr[i] < arr[i + 1])
{
isDesc = false;
break;
}
}
if (isDesc)
{
int j = 0;
for (size_t i = 0; i < arrLenght; i++)
{
if (arr[i] <= num)
{
b[j++] = num;
b[j++] = arr[i];
num = arr[arrLenght-1] - 1;
}
else
{
b[j++] = arr[i];
}

}
}
else
{
int j = 0;
for (size_t i = 0; i < arrLenght; i++)
{
if (arr[i] >= num)
{
b[j++] = num;
b[j++] = arr[i];
num = arr[arrLenght-1] + 1;
}
else
{
b[j++] = arr[i];
}

}
}
return b;
}

void main()
{
//int a[] = { 1, 2, 3, 4, 5, 6 };
int a[] = { 6,5,4,3,2,1 };
int num;
scanf("%d", &num);
int *b = InsertNum(a, num, 6);
printf("result:\n");
for (size_t i = 0; i < 7; i++)
{
printf("%4d", b[i]);
printf("\n");
}
delete[] b;
}

这样吧。不管是升序还是降序,都可以按原来规则排列

温馨提示:答案为网友推荐,仅供参考
相似回答