有一个已排好序的数组,今输入一个数,要求按原来的顺序规律将它插入到数组中。算法是:假设排序顺序是从小到大,对输入的数,检查它在数组中哪个数之后,然后将比这个数大的数顺序后移一个位置,在空出的位置上将该数插入。请在程序中的空白处填上一条语句或一个表达式。

admin2013-06-11  27

问题 有一个已排好序的数组,今输入一个数,要求按原来的顺序规律将它插入到数组中。算法是:假设排序顺序是从小到大,对输入的数,检查它在数组中哪个数之后,然后将比这个数大的数顺序后移一个位置,在空出的位置上将该数插入。请在程序中的空白处填上一条语句或一个表达式。
   #define N 100
   main()
   { float a[N+1],x;
     int i,p;
     for(i=0;i<N;i++)
        scanf("%f"&a);
     scanf("%f",&x);
     for(i=0,p=N;i<N;i++)
        if(x<a)
        {【  】;
         break;}
     for(i=N-1;【  】;i-)
         a[i+1]=a;
     a[p]=x;
     for(i=0;【  】;i++)
     { printf("%8.2f",a);
       if(i%5=0)
       printf("\n");
     }
   }

选项

答案p=i; i>=p i<=N

解析 本题主要考查了插入排序。由于程序中的数组在开始己经按从小到大顺序排序排好。在插入时,首先要查到第一个大于恃插入数的数组下标,即当待插入元素小于数组中当前元素时,记下数组的当前下标p,并结束循环,故第一空目的是为了记下数组下标,应填p=i;插入排序的第二部是将大于待插入元素的所有元素都向后移动—位,故在循环时,要从最后一个元素到第p个元素都要后移一位,因此第二空应填>i=p。最后一个循环是将N+1个元素都输出,故最后一空应为i<=N。(注:本题有多种答案,以上仅提供一种)
转载请注明原文地址:https://jikaoti.com/ti/Gcn0FFFM
0

最新回复(0)