阿司匹林最常见副作用:创建有序数组(升序),采用边读入边插入
来源:百度文库 编辑:偶看新闻 时间:2024/05/04 20:42:18
17.创建有序数组(升序),采用边读入边插入
/*创建有序的数组(升序):读入N个整数(N〈=数组定义的大小,
*为常量),要求用边读入边插入的方式将读入得数组逐个插入到
*数组的合适位置中,使得插入后的数组也是按升序排列的数组。
*/
#include
/*声明函数findPosition(int[],int,int,int),在升序排列
*的数组中查找整数的插入位置,使得插入后的数组还是升序,
*返回插入位置下标。
*/
int findPosition(int[],int,int,int);
/*声明函数insertElement(int[],int,int,int,int),往
*-数组中指定位置插入一个整数。
*/
int insertElement(int[],int,int,int,int);
/*声明函数output(int[],int),打印一个数组*/
void output(int[],int);
main()
{
/*arraySize定义数组大小,elementSize数组当前
*的元素个数,element要插入的元素,position
*插入元素的位置。
*/
int arraySize=5,data[5],elementSize=0,element,position=0,i;
printf("请输入%d个整数:",arraySize);
/*逐个读取并插入元素*/
for(i=1;i<=arraySize;i++)
{
if(i==1)
{
scanf("%d",&data[0]);
elementSize+=1;
}
else
{
scanf("%d",&element);
position=findPosition(data,arraySize,elementSize,element);
insertElement(data,arraySize,elementSize,position,element);
elementSize+=1;
}
}
printf("升序排列的结果:");
output(data,elementSize);
printf("\n");
return(0);
}
/*定义函数findPosition(int[],int,int,int),在升序排列
*的数组中查找整数的插入位置,使得插入后的数组还是升序,
*返回插入位置下标。
*/
int findPosition(int data[],int arraySize,int elementSize,int element)
{
int i=0;
/*数组当前元素个数少于定义的元素个数时可查找*/
if(elementSize
{
/*用循环确定插入元素的下标*/
while((i>=0)&&(i<=elementSize-1))
{
if(element<=data[i])
return i;
else
i+=1;
}
return elementSize;
}
else
return -1;
}
/*定义函数insertElement(int[],int,int,int,int),往
*-数组中指定位置插入一个整数。
*/
int insertElement(int data[],int arraySize,int elementSize,int position,int element)
{
int i;
/*不符合条件时返回-1或-2*/
if(position>arraySize)
return -1;
else
{
if(elementSize>=arraySize)
return -2;
else
{
/*视情况插入整数*/
if(position==elementSize)
data[position]=element;
else
{
for(i=elementSize-1;i>=position;i--)
data[i+1]=data[i];
data[position]=element;
}
return 1;
}
}
}
/*定义函数output(int[],int),打印一个数组*/
void output(int data[],int elementSize)
{
int i;
for(i=0;i<=elementSize-1;i++)
{
printf("%d\t",data[i]);
}
}