当前位置:编程学习 > C/C++ >>

C++编程请教!!!

设计一个边输入数据,边对数据进行插入排序的程序。要求插入排序的操作在函数中进行。输入的整数个数不限,最后输入0结束,同时输出已排好的数组。例如,数组开始没有数据,输入5后,数组内容为5,再输入7后,数组内容为5,7,再输入3后,数组内容为3,5,7等,最后输入0后,输入结束,输出排好的数组。
追问:我们刚学这个,题目要求用数组做。。
答案:

void fun()
{
 int array[10] = {0};
 int n = 1;
 int i = 0; // 已输入的个数
 while(n!=0)
 {
  cout<<"输入第"<<i+1<<"个数字:";
  cin>>n;

  array[i] = n; // 将每次输入的数,放入对应次数的位置
  // 排序,采用冒泡排序,嘿嘿,最废的方法
  for(int b=0;b<i;b++)
  {
   if(array[b+1] != 0)// 数组的下一个不为0才排序
   {
    int temp = 0;
    if(array[b] > array[b+1])
    {
     temp = array[b+1];
     array[b+1] = array[b];
     array[b] = temp;
    }
   }
   else
    break;// 为0就退出
  }
  // 打印数组
  cout<<"输出数组:";
  for(int a=0;a<10;a++)
  {
   // 如果数组里面有0元素,就退出,也就是只打印不是0的数字
   if(array[a] == 0)
    break;
   cout<<array[a]<<"--";// 打印数组中的数字
  }
  cout<<endl;
  i++;// 计数器递增1
  // 当数组满了,就退出主循环
  if(i == 10)
   break;
 }
 
}

 

试试吧,应该可以编译通过的。我现写的,呵呵

这种题目用数组做降低了效率啊

数组一旦被确定好大小则不可被改变,既然是用C++做,那就用用STL吧。如果要用算法请用二分搜索,按LS说的线性搜索时间复杂度太高

用vector多轻松啊。何必搞这么多没用的东西。

上一个:菜鸟C++编程遇到的问题,while语句
下一个:C++编程 从文件中查找数据并显示 代码

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,