在排好序的整数数组中有序插入任一给定整数X
给定存储了N个从大到小排好序的整数数组List[ ],试给出算法将任一给定整数X插入数组中合适位置,以保证结果依然有序。
输入样例:
1 4 7 6 9 2 5
3
输出样例:
1 2 3 4 5 6 7 9
// 1 4 7 6 9 2 5
// 3
#include <stdio.h>
int charu(int List[], int m, int n);
int main()
{
int i = 0, n = 0, temp = 0;
int m = 0;
int List[1000];
do //遇到回车键输入结束
{
scanf_s("%d", &List[i++]);
n = i; //记住最后一个元素的下标
} while ((getchar()) != '\n');
for (i = 0;i < n;i++) //给数组中元素排序
{
for (int j = i + 1;j <= n;j++)
{
if (List[j] < List[i])
{
temp = List[j];
List[j] = List[i];
List[i] = temp;
}
}
}
List[n+1]=charu(List, m, n);
for (i = 1;i <=n+1;i++) //遍历输出
printf("%d ", List[i]);
return 0;
}
int charu(int List[], int m, int n) //插入函数
{
int x, k = 0,j=0;
scanf_s("%d", &x);
for (k = 0;k < n;k++)
{
if (List[k] > x) //遍历判断大小,找位置
{
j = k;
for (k = n;k >= j;k--) //数组元素依次往后移
List[k + 1] = List[k];
List[k+1] = x; //注意此处为k+1
break;
}
}
return List[n+1]; //插入一个元素后,总元素个数变成n+1
}
以下是运行结果