动态数组,该怎么处理
动态数组
#include <iostream>
using namespace std;
void sorted(int *, int);
void main()
{
int n;
cout<<" input N :"<<endl;
cin>>n;
int *array = new int[n];
cout<<"input Array :"<<endl;
for(int i=0 ; i<n ; i++)
{
cin>>array[i];
}
sorted(array , n);
}
void sorted(int *number, int m)
{
int temp;
for(int i=0 ; i<m ; i++)
{
if(*(number+i) <= *(number+(i+1)))
{
temp = *(number+i);
*(number+i) = *(number+(i+1));
*(number+i) = temp;
}
}
cout<<"the sorted number :"<<endl;
for(int j=0 ; j<m ; j++)
{
cout<<*(number+i)<<" ";
}
cout<<endl;
}
程序可以运行,也没提示错误! 为什么结果是这样的呢!!!

------解决方案--------------------
1.你的排序方法很有问题,简单的排序有选择排序和冒泡排序,如果你要用冒泡排序,请认真看排序步骤。
2.你的程序变量很多错误,例如
if(*(number+i) <= *(number+(i+1)))
{
temp = *(number+i);
*(number+i) = *(number+(i+1));
*(number+i) = temp;
}
中的最后一行,应该是*(number+(i+1)) = temp;
for(int j=0 ; j<m ; j++)
{
cout<<*(number+i)<<" ";
}
中的i应该是j,要多注意细节,在你的代码基础上做了下修改
#include <iostream>
using namespace std;
void sorted(int *, int);
void main()
{
int n;
cout<<" input N :"<<endl;
cin>>n;
int *array = new int[n];
cout<<"input Array :"<<endl;
for(int i=0 ; i<n ; i++)
{
cin>>array[i];
}
sorted(array , n);
}
void sorted(int *number, int m)
{
int temp;
for(int i=0 ; i<m ; i++)
{
if(*(number+i) <= *(number+(i+1)))
{
temp = *(number+i);
*(number+i) = *(number+(i+1));
*(number+i) = temp;
}
}
cout<<"the sorted number :"<<endl;
for(int j=0 ; j<m ; j++)
{
cout<<*(number+i)<<" ";
}
cout<<endl;
}
程序可以运行,也没提示错误! 为什么结果是这样的呢!!!
------解决方案--------------------
1.你的排序方法很有问题,简单的排序有选择排序和冒泡排序,如果你要用冒泡排序,请认真看排序步骤。
2.你的程序变量很多错误,例如
if(*(number+i) <= *(number+(i+1)))
{
temp = *(number+i);
*(number+i) = *(number+(i+1));
*(number+i) = temp;
}
中的最后一行,应该是*(number+(i+1)) = temp;
for(int j=0 ; j<m ; j++)
{
cout<<*(number+i)<<" ";
}
中的i应该是j,要多注意细节,在你的代码基础上做了下修改
#include <iostream>
using namespace std;
void sorted(int *, int);
void main()
{
int n;
cout<<" input N :"<<endl;
cin>>n;
int *array = new int[n];
cout<<"input Array :"<<endl;
for(int i=0 ; i<n ; i++)
{
cin>>array[i];
}
sorted(array , n);
}
void sorted(int *number, int m)
{
int temp;
for(int i = 0;i < m;i++)
{
for(int j = m - 1;j > i;j--)
{
if(*(number + (j - 1)) <= *(number + j))
{
temp = *(number + (j - 1));
*(number + (j - 1)) = *(number + j);
*(number + j) = temp;
}
}
}
cout<<"the sorted number :"<<endl;
for(int j=0 ; j<m ; j++)
{
cout<<*(number+j)<<" ";
}
cout<<endl;
}