冒泡排序的问题

budaowenglf 2009-07-17 06:30:27
#include "iostream.h"
void bubble(int a[],int size);
int main()
{
int array[]={12,54,6,5,8,15,45,64,6,6,5};

int len=sizeof(array)/sizeof(int);
for(int i=0;i<len;i++)
cout<<array[i]<<",";
cout<<endl;

bubble(array,len);

}

void bubble(int a[],int size)
{
for(int i=1;i<size;i++)
for(int j=1;j<=size-i;j++)
{
if(a[j+1]>a[j])
{
int temp;
temp=a[j+1];
a[j+1]=a[j];
a[j]=temp;
}
}

for(int j=0;j<size;j++)
cout<<a[j]<<",";
}


本人写的,可怎么就是有错呢!!!!
谁能告诉我!!!

...全文
111 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
fiyaa 2009-07-19
  • 打赏
  • 举报
回复
下标越界了
  • 打赏
  • 举报
回复
#include "iostream" 
using namespace std;
void bubble(int a[],int size);
int main()
{
int array[]={12,54,6,5,8,15,45,64,6,6,5};

int len=sizeof(array)/sizeof(int);
for(int i=0;i <len;i++)
cout <<array[i] <<" ";
cout <<endl;

bubble(array,len);

}

void bubble(int a[],int size)
{
for(int i=0;i <size;i++)
for(int j=0;j <size-1;j++)
{
if(a[j+1]>a[j])
{
int temp;
temp=a[j+1];
a[j+1]=a[j];
a[j]=temp;
}
}

for(int k=0;k <size;k++)
cout <<a[k] <<" ";
cout<<endl;
}
crafet 2009-07-19
  • 打赏
  • 举报
回复
1楼进行的是选择排序啦
zzcmx2008 2009-07-19
  • 打赏
  • 举报
回复
for(int i=0;i < size-1;i++)
for(int j=0;j < size-i-1;j++)
{
if(a[j+1]>a[j])
{
int temp;
temp=a[j+1];
a[j+1]=a[j];
a[j]=temp;
}

注意下标从0开始的。
dyong10 2009-07-19
  • 打赏
  • 举报
回复
#include "iostream.h"
void bubble(int a[],int size);
int main()
{
int array[]={12,54,6,5,8,15,45,64,6,6,5};

int len=sizeof(array)/sizeof(int);
for(int i=0;i <len;i++)
cout <<array[i] <<",";
cout <<endl;

bubble(array,len);

}

void bubble(int a[],int size)
{
for(int i=0;i <size-1;i++)//数组下标从0开始,11个元素的数组位数是从0到11
for(int j=0;j<size-i-1;j++)//这里注意不能越界,因为当j=10,j+1就等于11了
{
if(a[j+1]>a[j])
{
int temp;
temp=a[j+1];
a[j+1]=a[j];
a[j]=temp;
}
}

for(int j=0;j <size;j++)
cout <<a[j] <<",";
}
tkminigame 2009-07-18
  • 打赏
  • 举报
回复
内层循环size不要减1。
s510601017 2009-07-18
  • 打赏
  • 举报
回复
#include "iostream.h"
void bubble(int a[],int size);
int main()
{
int array[]={12,54,6,5,8,15,45,64,6,6,5};

int len=sizeof(array)/sizeof(int);
for(int i=0;i <len;i++)
cout < <array[i] < <",";
cout < <endl;

bubble(array,len);

}

void bubble(int a[],int size)
{
for(int i=0;i <size;i++)
for(int j=size-1;j >i;j--)
{
if(a[j-1]>a[j])
{
int temp;
temp=a[j-1];
a[j-1]=a[j];
a[j]=temp;
}
}


for(int j=0;j <size;j++)
cout < <a[j] < <",";
}
vcchen_bo_qiang 2009-07-17
  • 打赏
  • 举报
回复
#include <stdio.h>
void main()
{
int a[10],i,j;
printf("printf input ten numbers:\n");
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
for(i=9;i>=0;i--)
for(j=0;j<i;j++)
{
if(a[j+1]>a[j])
{
int temp;
temp=a[j+1];
a[j+1]=a[j];
a[j]=temp;
}
}
for(i=0;i<10;i++)
{
printf("%d\t",a[i]);
}
}
luotuo512 2009-07-17
  • 打赏
  • 举报
回复
逻辑思路要理清,实在不行,先用白话或者伪代码写出来,再翻译成代码。
wujun850615 2009-07-17
  • 打赏
  • 举报
回复
楼上正解
dsldon 2009-07-17
  • 打赏
  • 举报
回复
楼上的,貌似最外层循环 i < size - 1 就可以了。
zfm1988 2009-07-17
  • 打赏
  • 举报
回复
上楼说的并非冒泡法,只是选择排序了
改成for(int i=0;i <size;i++)
for(int j=0;j <=size-i;j++)
{
if(a[j+1]>a[j])
{
int temp;
temp=a[j+1];
a[j+1]=a[j];
a[j]=temp;
}
stevensun724 2009-07-17
  • 打赏
  • 举报
回复
1楼的对,数组的下标是从0开始的,结束到n - 1
K_s_G 2009-07-17
  • 打赏
  • 举报
回复
for(int i=0;i <size-1;i++)
for(int j=i+1;j <size;j++)
{
if(a[j]>a[i])
{
int temp;
temp=a[j];
a[j]=a[i];
a[i]=temp;
}
}

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧