描述
给出若干个数,将数字储存在数组中,然后使用插入排序,按照升序排列输出数字
输入一个整数n表示n个数,接着输入这n个数。
按照升序输出这个数。
输入输出示例:
输入样例
5
3 2 4 5 4
输出样例
2 3 4 4 5
参考程序
#include<stdio.h>
int main() {
int i,n,x;
scanf("%d",&n);
int a[100];//在有序数组中存储100个int型的数据。
for (i=0;i<n;i++)
{
scanf("%d",&a[i]);//给数组中i位置上的数据取一个地址。
}
int temp,j;//定义一个临时中间变量temp,负责中转变量i与j的数据。
for (i=1;i<n;i++)
{
j=i-1;
temp=a[i];
while(a[j]>temp&&j>=0)
{
a[j+1]=a[j];
j--;
}
a[++j] =temp;//完成插入操作。
}
for (i=0;i<n;i++)
{
printf("%d ",a[i]);//注意题目所输出的格式。
}
return 0;
}
解题思路:解题思路:本题通过插入排序的方法将数组中的数进行排序。
首先题目要求运用插入排序,按照升序排列数字,输入头文件与主函数,再定义变量的类型,根据题目描述所说,要首先输入一个整数n表示个数,因此运用数组的方法来进行运算。在这假设其为100。
扫描二维码关注公众号,回复:
13233816 查看本文章
因此定义一个储存了100个int型的数据的数组,且给到其地址,以用于输入。
为了方便题中定义的i与j数据的转变,因此定义一个临时的中转变量,来负责此事。
为有数组有不确定n个数据,因此通过插入排序的基本方法
(插入排列的样例格式)
int temp;
int i;
int j;
for (i = 1;i<=len;i++)
{
temp = a[i];
for (j = i-1;j >= 1 && a[j] > temp;j--)
{
a[j + 1] = a[j];
}
a[j + 1] = temp;
}
完成插入操作,最后按照升序通过循环语句把该数据输出。