有关冒泡排序的问题

The_Other_Shore 2016-07-05 10:45:13
// 冒泡,不断比较相邻的两个数,如果顺序错了,那么就交换

for (int i = 0; i < n - 1; i++) {

for (int j = 1; j < n - i; j++) {

if (a[j - 1] > a[j]) {

int temp = a[j];

a[j] = a[j - 1];

a[j - 1] = temp;

}

}

}

该段代码没有遍历到最后一位啊
...全文
117 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zycxnanwang 2016-07-06
  • 打赏
  • 举报
回复
数组是从0到n-1的,遍历到了啊!
paschen 版主 2016-07-06
  • 打赏
  • 举报
回复


for(i=0;i<n-1;i++)   

    for(j=0;j<n-1-i;j++)       

        if(a[j]>a[j+1]){

            temp=a[j+1];

            a[j+1]=a[j];

            a[j]=temp;

        }
小灸舞 2016-07-06
  • 打赏
  • 举报
回复
楼主自己弄几个数,然后纸上写一下就明白了。
n个数的话,第一轮的比较,只要比较n-1次,而不是n次
flying_music 2016-07-06
  • 打赏
  • 举报
回复
n是元素个数吧,那就正好啊,下标的范围是0到n-1 i=0时 j=1,比较的是a[0]和a[1] j=n-i-1=n-1,比较的是a[n-2]和a[n-1] i=n-2时 j=1和j=n-i-1=1相同,即只比较a[0]和a[1]

64,637

社区成员

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

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