阿司匹林最常见副作用:创建有序数组(升序),采用边读入边插入

来源:百度文库 编辑:偶看新闻 时间: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]);

       }

}

运行效果如下:
有一个已经按升序排好的数组,有10个整数,现另外插入一个数组,使新得到的数组任按升序排列 统计一个单链表中数据为X的结点个数.并在有序单链表(升序)中插入一个元素,插入后仍有序 任意给定5个数字,其中必存在3个数字已经有序(或升序或降序),找出这5个数字中最长的升序或降序序列。 任意给定5个数字,其中必存在3个数字已经有序(或升序或降序),找出这5个数字中最长的升序或降序序列。 C语言如何从文件读入数组 向数组a[10]中输入10个数,将其中的偶数输入数组b[10]中,并(按升序)输 向数组a[10]中输入10个数,将其中的偶数输入数组b[10]中,并(按升序)输出。 编程:删除有序数组中的某数,使数组仍有序. 用C语言编程:删除有序数组中的某数,使数组仍有序. pascal编程将输入到一维数组中的任意n个数按升序排列 如何实现“采用数组来存储元素的环形队”(用c++描述) 有一个以排好序的一维数组,今输入一个数,要求按原来顺序的规律将它插入到数组中。(数组长度不限) [求助][题目:将一个数插入到一个有序的数列中,插入后数列仍然有序] 二维数组的数据读入方法(我用的是VFP9.0) vb中如何智能化读入txt文件中的数据到数组中 ASP可以创建cookies数组吗? 字节数组byte[]a,byte[] b都读入了文件内容,要将这两个文件的内容写入到另外一个数组byte[] c里要怎么写 如何对java中的数组进行排序插入和删除 vb程序设计(数组) 社会的和谐有序,需要有鲜明的( )。 kbhit()的返回值是什么啊? 有哪个函数可以从键盘读入一个字符(不需要回车直接读入) 创建一名为stu的数据库文件应采用什么命令 FLASH中间桢自动插入生成采用了什么算法 已有一个排好序的数组,要求输入一个数后,按原来的规律将它插入数组中