C++编程请教!!!
设计一个边输入数据,边对数据进行插入排序的程序。要求插入排序的操作在函数中进行。输入的整数个数不限,最后输入0结束,同时输出已排好的数组。例如,数组开始没有数据,输入5后,数组内容为5,再输入7后,数组内容为5,7,再输入3后,数组内容为3,5,7等,最后输入0后,输入结束,输出排好的数组。
追问:我们刚学这个,题目要求用数组做。。
设计一个边输入数据,边对数据进行插入排序的程序。要求插入排序的操作在函数中进行。输入的整数个数不限,最后输入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多轻松啊。何必搞这么多没用的东西。