中易网

C++有一个已按由小到大排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中。(要求用指针实现)

答案:3  悬赏:20  
解决时间 2021-04-28 13:18
  • 提问者网友:相思故
  • 2021-04-27 21:53
C++有一个已按由小到大排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中。(要求用指针实现)
最佳答案
  • 二级知识专家网友:心与口不同
  • 2021-04-27 22:30


#include <iostream.h>


void main()
{
 int a[5]={2,4,6,8,10},b[200];
 int *p,*s;


 int n=0,m,i,j,tem;
 p=a;
 s=b;
   for(i=0;i<5;i++)
 {
  *s++=*p++;
 }
   cout<<"插入数字(输入0结束):";
 while(1)
 {
  
  cin>>m;
  if(m==0)
   break;
  n++;
  *s++=m;
  
 }


 for(i=0;i<5+n;i++)
 {
  for(j=i;j<5+n;j++)
  {
   if(b[i]>b[j])
   {
    tem=b[i];
    b[i]=b[j];
    b[j]=tem;
   }
  }
 
 }
 for(i=0;i<5+n;i++)
  cout<<b[i]<<" ";
 cout<<endl;


}

全部回答
  • 1楼网友:浪女动了心
  • 2021-04-28 00:01

二分查找+插入排序

  • 2楼网友:白日梦制造商
  • 2021-04-27 23:06

程序代码:

#include <iostream> using namespace std;

const int MAXNUM = 100;    //数组元素最大个数

//排序函数 void Insert(float num,float *arry)     {  float temper;  for (int i=0;i<MAXNUM-1;++i)  {   if (num < arry[i])   {    for (int j = i;j<MAXNUM-1;++j)    {     temper = arry[j];     arry[j] = num;     num = temper;    }    break;   }   else   {    if (arry[i] == 0)    {     arry[i] = num;    }   }        } }

int main() {  float Arry[MAXNUM] = {2,4,6,7,8};  int length = 5;  cout<<"初始的数组为: ";  for (int i=0;i<length;++i)  {   cout<<Arry[i]<<" ";  }  cout<<endl<<endl;  float num;  bool flag = 1;  while (flag)  {   cout<<"请输入你要插入的数,并按回车:";   cin>>num;   Insert(num,Arry);   length++;   cout<<"排序后的数组为: ";   for (int i=0;i<length;++i)   {    cout<<Arry[i]<<" ";   }   char s;   cout<<endl<<endl<<"是否继续插入数字?(Y/N)";   cin>>s;   cout<<endl;   switch(s)   {   case 'n': flag = 0;break;   case 'N': flag = 0;break;   case 'y': break;   case 'Y': break;   default:    cout<<"输入错误,程序退出!"<<endl;    flag = 0;break;   }  }  return 0; }

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息