最后一个数据丢了,出来一个奇怪的数据。不知道什么原因。
#include<iostream>
using namespace std;
const int MAX=100;
void myinser(int a[],int x,int &n);
int main()
{
int a[MAX],n,x,maxi;
cin>>n;
for(int i=0;i<n;i++)
cin>>a[i];
for(int j=0;j<n-1;j++)
{
for(int k=j+1;k<n;k++)
{
if(a[k]>a[j])
{
maxi=a[k];
a[k]=a[j];
a[j]=maxi;
}
}
}
cin>>x;
myinser(a,x,n);
for(int i=0;i<n;i++)
cout<<a[i]<<" ";
return 0;
}
void myinser(int a[],int x,int &n)
{
for(int i=0;i<n;i++)
{
if(x>a[i])
for(int j=n;j>=i;j--)
a[j+1]=a[j];
a[i]=x;
break;
}
n++;
}
这是输入和输出。
10 2 7 9 11 5 4 3 6 8 20
12
12 11 9 8 7 6 5 4 3 2 1875855620
从键盘输入n个整数(n<100),存放在一维数组中,将它们从大到小排序,再从键盘输入一个整数x,将该数插入到该数组中,使得插入后元素序列依然有序,输出插入后数组中的所有元素。
函数有问题,我改了一下。
for(int i=0;i<n;i++)
{
if(x>a[i])
{
for(int j=n-1;j>=i;j--)
a[j+1]=a[j];
a[i]=x;
n++;
}
break;
}
但是这样,12又不在输出中,其他正常。
函数这么整就对了
int i;
for(i=n-1;i>=0&&a[i]<x;i--)
a[i+1]=a[i];
a[i+1]=x;
n++;
但是我还是不知道前一个方法哪里错了。