Chinaunix首页 | 论坛 | 博客
  • 博客访问: 145250
  • 博文数量: 66
  • 博客积分: 1571
  • 博客等级: 上尉
  • 技术积分: 715
  • 用 户 组: 普通用户
  • 注册时间: 2011-10-24 22:55
文章分类

全部博文(66)

文章存档

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   cout<}

这样的代码我无论如何调,都不能正确排序,后来分析下,函数是在栈区分配内存,函数结束,各变量也就消亡。显然在swap函数中指针*temp我并没有给其开辟内存。这显然是不对的。于是将swap函数改为如下即可:

void swap(int *ai,int *aj)
{
  int *temp;
  temp=(int*)malloc(sizeof(int));
  *temp=*ai;
  *ai=*aj;
  *aj=*temp;
  free(temp);
}

阅读(832) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~