题目:
实验7-1-1 简化的插入排序 (15分)
题目要求:
本题要求编写程序,将一个给定的整数插到原本有序的整数序列中,使结果序列仍然有序。
输入格式:
输入在第一行先给出非负整数N(<10);第二行给出N个从小到大排好顺序的整数;第三行给出一个整数X。
输出格式:
在一行内输出将X插入后仍然从小到大有序的整数序列,每个数字后面有一个空格。
输入样例:
5
1 2 4 5 7
3
输出样例:
1 2 3 4 5 7
解题代码:
#include<stdio.h>
int main()
{
int N;
scanf( "%d", &N );
int a[N + 1];
int i;
for( i = 0; i < N; i++ )
{
scanf( "%d", &a[i] );
}
int x;
scanf( "%d", &x );
int j = 0, k = 0, flag = 1;
for( i = 0; i < N + 1; i++ )
{
if( x < a[i] && i <= N - 1 )
{
k = i;
flag = 0;
while( N - i > 0 )
{
a[N - j] = a[N - 1 - j]; //数组插入位置后面的数组依次后移一位
i++;
j++;
}
a[k] = x;
}
if( flag == 1 ) a[N] = x; //直接插在数组最后
}
if( N == 0 ) printf( "%d ", x ); //N = 0,即数组没有元素
else for( i = 0; i < N + 1; i++ ) printf( "%d ",a[i] );
printf("\n");
return 0;
}