回 帖 发 新 帖 刷新版面

主题:帮忙看看这个冒泡算法有什么问题??谢谢啦

#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;
}

回复列表 (共3个回复)

沙发


看了一晚上也没看出毛病。[em10]

板凳


#include<iostream.h>

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 = 1; j < Last -i; j++)
        {
            if(List[j] < List[j+1])
            {
                List[0] = List[j];
                List[j] = List[j+1];
                List[j+1] = List[0];
                swap = 1;
                //cout << swap << endl;
            }
            
        }
   if(0 == swap)//这句要在内循环结束后测试,只有内循环测试完后才能确定是否排列完全
            {
                break;// 跳出外循环,而不是用来跨出内循环的
            }
    }
    for(i =1;i < 9 ;i++)
       cout << List[i] << endl;
    
    return 0;//main函数要返回int类型
}

建议你好好看看书,问题太多,基础不牢!

3 楼


非常感谢您啊。,知道问题了,谢谢您的指导。[em2][em2][em2]

我来回复

您尚未登录,请登录后再回复。点此登录或注册