首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

求解惑求解惑解决办法

2013-01-18 
求解惑求解惑本帖最后由 sdu20112013 于 2013-01-13 15:42:15 编辑#include iostreamusing namespace st

求解惑求解惑
本帖最后由 sdu20112013 于 2013-01-13 15:42:15 编辑


#include <iostream>
using namespace std;

class Array
{
int num;
int *p;
public:
void init()        //初始化
{
      cout<<"请输入数组元素个数"<<endl;
  cin>>num;
  p=new int[num];
  cout<<endl;
  cout<<"请依次输入数据"<<endl;
  for(int i=0;i<num;i++)
  {
  int data;
  cin>>data;
  p[i]=data;
  }
          sort(p,num);
  delete []p;
}

void sort(int a[],int num)
{
         int index=num;
 bool flag=true;
 while(flag)
 {
 flag=false;
 for(int i=1;i<index;i++)
 {
 if(a[i-1]>a[i])
 {
 swap(a[i-1],a[i]);
 flag=true;

 }
}
index--;
 }
   for(int j=0;j<num;j++)
  {
 cout<<a[j]<<endl;
  }
       }
    
void swap(int a,int b)
{
int temp;
if(a>b)
{
temp=a;
a=b;
b=temp;
}
}

};

int main()
{
Array *p=new Array;
p->init();

delete p;
return 0;
}

红色部分,调用swap的时候,通过单步调试,知道在swap内部a,b的值是交换了的。但是调用完之后,数组内的值并未发生交换,为何?如果一定要通过调用swap的方式,该如何修改?(不要说把swap内部代码直接写到for循环内部)。多谢!
[解决办法]


void swap(int &a,int &b)    
{     
   int temp;        
if(a>b)       
 {           
 temp=a;           
 a=b;           
 b=temp;       
 }   
 }

热点排行