2012年(66)
分类: C/C++
2012-05-16 10:01:39
如下是最简单的冒泡排序算法
#include
#include
using namespace std;
void swap(int *ai,int *aj)
{
int *temp;
*temp=*ai;
*ai=*aj;
*aj=*temp;
}
main()
{
int a[10]={
9,3,6,4,2,10,5,1,8,7
};
int i,j;
int n=10;
for(i=0;i
for(j=i+1;j
if(a[i]>a[j])
swap(&a[i],&a[j]);
}
}
for(i=0;i
这样的代码我无论如何调,都不能正确排序,后来分析下,函数是在栈区分配内存,函数结束,各变量也就消亡。显然在swap函数中指针*temp我并没有给其开辟内存。这显然是不对的。于是将swap函数改为如下即可:
void swap(int *ai,int *aj)
{
int *temp;
temp=(int*)malloc(sizeof(int));
*temp=*ai;
*ai=*aj;
*aj=*temp;
free(temp);
}