[PTA]实验7-1-1 简化的插入排序

Posted Spring-_-Bear

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[PTA]实验7-1-1 简化的插入排序相关的知识,希望对你有一定的参考价值。

本题要求编写程序,将一个给定的整数插到原本有序的整数序列中,使结果序列仍然有序。

输入格式:

输入在第一行先给出非负整数N(<10);第二行给出N个从小到大排好顺序的整数;第三行给出一个整数X。

输出格式:

在一行内输出将X插入后仍然从小到大有序的整数序列,每个数字后面有一个空格。

输入样例:

5
1 2 4 5 7
3

输出样例:

1 2 3 4 5 7 
  • 提交结果:

在这里插入图片描述

  • 源码:
#include<stdio.h>
int main(void)
{
	int array[11];
	int N, X;	// 整数个数;给定的正数X
	int index = 0;	// X插入位置的数组下标
	int flag = 0;	// 未找到X的插入位置,将X插入到数组尾

	scanf("%d", &N);

	// 输入N个非递减数列
	for (int i = 0; i < N; i++)
	{
		scanf("%d", &array[i]);
	}

	scanf("%d", &X);

	// 遍历数组,寻找到X的插入位置
	for (int i = 0; i < N; i++)
	{
		if (array[i] >= X)
		{
			flag = 1;
			index = i;
			break;
		}
	}

	// 未找到X的插入位置,将X插入到数组尾
	if (flag == 0)
	{
		array[N] = X;
	}
	else
	{
		// 数组长度加1(原来下标只到N-1,现在到N),将index之后的所有元素后移一
		for (int j = N; j >= index; j--)
		{
			array[j] = array[j - 1];
		}
		// 将X插入到index
		array[index] = X;
	}

	for (int i = 0; i <= N; i++)
	{
		printf("%d ", array[i]);
	}

	return 0;
}

以上是关于[PTA]实验7-1-1 简化的插入排序的主要内容,如果未能解决你的问题,请参考以下文章

[PTA]实验8-1-4 使用函数的选择法排序

[PTA]实验8-2-8 字符串排序

[PTA]实验7-1-5 选择法排序

[PTA]实验9-8 通讯录排序

数据结构PTA7.1.2 插入排序还是归并排序?(两种解法)

PTA 程序设计天梯赛(141~160题)