注册 登录
编程论坛 C++教室

已有一个已排好的9个元素的数组,今输入一个数要求按原来排序的规律将它插入数组中。

沉迷 发布于 2015-05-31 19:19, 5584 次点击
#include<iostream>//已有一个已排好的9个元素的数组,今输入一个数要求按原来排序的规律将它插入数组中。
using namespace std;
int main()
{
    int a[10],i,b,t;
    for(i=0;i<9;i++)
    {    cin>>a[i];}
    cin>>b;
for(i=0;i<10;i++)
    if(b>a[i])
        t=b;
       b=a[i];
       a[i]=t;
for(i=0;i<10;i++)
cout<<a[i]<<endl;
return 0;
}     
4 回复
#2
取名字2015-05-31 21:21
楼主的程序没有实现将输入的数按原来的顺序插入数组中的功能,实现的是输入的数与数组中某个数之间的交换(其实也没实现,因为if语句没有加大括号"}")。
楼主把程序中的这一段重写:
for(i=0;i<10;i++)
    if(b>a[i])
        t=b;
       b=a[i];
       a[i]=t;
思路是:找到插入的位置后,将该位置及之后的元素依次后移,然后将输入的数字插入到该位置;也可以将输入的数字先放在数组的末尾,然后利用冒泡法或是选择排序法进行排序。
在寻找插入位置的时候,可以采用折半查找法。
#3
yangfrancis2015-05-31 21:23
没有对a[9]赋过值,很难说在第二个for循环访问到a[9]时会发生什么情况.
#4
w2009w2015-05-31 21:37
//已有一个已排好的9个元素的数组,
//今输入一个数要求按原来排序的规律将它插入数组中。
#include<iostream>
using namespace std;
int main()
{
    int a[10],i,b,t;
    for(i=0;i<9;i++)
    {   
        cout<<"输入第"<<i+1<<"个元素:"<<endl;
        cin>>a[i];
        cout<<endl;
    }
    cout<<"输入第10个元素:"<<endl;
    cin>>b;
    a[9]=b;
    for(i=0;i<10;i++)
        cout<<a[i]<<endl;
    return 0;
}
#5
w2009w2015-05-31 21:37
我懂你的意思!顶一个吧!
1