实例描述
在有序(升序)的数组中插入一个数,使插入后的数组仍然有序。
代码实现
(1)在Visual Studio 2017中选择“文件”→“新建”→ “项目”。
(2)在跳出的界面选择“Windows 桌面”→“Windows桌面向导” → “输入项目名称(输入179)”→“选择保存项目路径,,单击“确定”按钮,创建一个工程步骤完成。
(3)在创建的工程中,在“源文件”右键,选择“添加” →“新建项” →“C++文件(.cpp)”,在下面的位置输入文件名,单击“添加”,完成源文件的的添加。
(4)在代码编辑界面中,开始编写本实例代码。
(5)引用头文件,进行宏定义。
#include<stdio.h>
#define N 10
(6)创建自定义函数insert(),用于实现向有序的数组中插入一个元素,并使插入后的数组仍然有序。代码如下
void insert(int *a, int n, int x) /*插入元素的自定义过程*/
{
int*p, *q; /*声明指针变量*/
for (p = a; p < a + n; p++) /*遍历数组元素*/
{
if (*p > x) /*找到要插入的位置*/
{
q = p; /*记录要插入的位置*/
break; /*跳出循环*/
}
}
for (p = a + n; p >= q; p--) /*将插入位置之后的数据下移*/
*p = *(p - 1);
*q = x; /*插入*/
}
(7)主函数程序代码如下:
void main()
{
int i, a[N + 1], an; /*声明变量和数组*/
int *p; /*声明指针变量*/
printf("Input 10 seriate integer :\n ");
for (i = 0; i < N; i++)
scanf("%d", &a[i]); /*输入数组元素*/
printf("input inserting data: ");
scanf("%d", &an); /*输入要插入的数*/
insert(a, N, an); /*进行插入操作*/
for (p = a; p < a + N + 1; p++)
{
printf("%3d", *p); /*输出插入元素后的数组*/
}
}