注册 登录
编程论坛 C++教室

帮忙看看这个冒泡算法有什么问题?看了一晚上也没看出毛病

发布于 2010-04-28 07:55, 541 次点击
#include "stdafx.h"
#include<iostream>

int main()
{
    int Last = 8;
    int List[9] = {0, 21,32,43,24,44,12,23,7};
    int i , j ,swap;
    for(i = 1; i < Last; i++)
    {
        swap = 0;
        for(j = Last; j > i; j--)
        {
            if(List[j-1] > List[j])
            {
                List[0] = List[j-1];
                List[j-1] = List[j];
                List[j] = List[0];
                swap = 1;
                std::cout << swap << std::endl;
            }
            if(!swap)
            {
                break;
            }
        }
    }
    for(int i =1;i < 9 ;i++)
        std::cout << List[i] << std::endl;
}
5 回复
#2
2010-04-28 07:56
只能把7排到前面去,后面的就不行了
#3
2010-04-28 12:36
别搞得那么复杂 这样就可以排除这九个数的顺序了
#include<iostream>
int main()
{
    int Last=8,a;
    int List[9]={0,21,32,43,24,44,12,23,7};
    int i,j;
    for(i=0;i<Last;i++)
    {
        for(j=Last;j>i;j--)
        {
            if(List[j-1]>List[j])
            {
                a=List[j-1];
                List[j-1]=List[j];
                List[j]=a;
            }
        }
    }
    for(i=0;i<9;i++)
        std::cout<<List[i]<<std::endl;
    return 0;
}
#4
有风的夜晚2010-04-28 22:08
那句
List[j]=List[0]
是什么意思?
#5
2010-04-29 19:42
回复 4楼 有风的夜晚
那个就是用R[0]作为一个temp变量。

哈哈。受我们老师的影响。
#6
2010-04-29 19:43
回复 3楼 clcaogang
谢谢啦,偶找到问题啦,
是那个break的位置不对
1