2 langdon1996 Langdon1996 于 2016.01.25 16:40 提问

C++冒泡排序,为什么最大值会丢失,第一个数永远是0??

#include
using namespace std;
int main()
{//从小到大排列
int arr[5];
int i,j;
int temp;
for(i=0;i {
cin>>arr[i];
}
for(int i=0;i {
for(int j=0;j {
if(arr[j]>arr[j+1])
{
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}

    }

}
for(i=0;i<5;i++)
{

    cout<<endl<<arr[i];
}
return 0;

}

7个回答

qq_27183003
qq_27183003   Ds   Rxr 2016.01.25 22:10
 #include <iostream>
using namespace std;
int main()
{//从小到大排列 
    int arr[5];
    int i,j;
    int temp;
    for(i=0;i<5;i++)
    {
        cin>>arr[i];
    }
    for(int i=0;i<4;i++) {
        for(int j=i+1;j<5;j++) {
            if(arr[i]>arr[j])
            {
                temp=arr[i];
                arr[i]=arr[j];
                arr[j]=temp;
            }
        }

    }
    for(i=0;i<5;i++)
    {

        cout<<endl<<arr[i];
    }
    return 0;
}

qq_27183003
qq_27183003 不用谢,不要忘了点击采纳结贴哟。。方法:把鼠标移到满意的回答贴上,右边会出现一个采纳按钮,点击。OK。3Q。。
接近 2 年之前 回复
Langdon1996
Langdon1996 太感谢你了!!
接近 2 年之前 回复
sxy_sdy
sxy_sdy   2016.01.25 17:25

循环条件错误,应该为
for(int i=0;i<num;i++)
{
for(int j=i;j<num;j++)
{
....
}
}

John_ToStr
John_ToStr   Rxr 2016.01.25 17:37

请把代码粘贴全了, 这样我才能...

u011423936
u011423936   2016.01.25 17:37

for循环错了,连左右括号都不一样。

qq_24885263
qq_24885263   2016.01.25 19:18

冒泡排序最大值丢失应该是取数组下标出错了吧,循环没写对就会出现这种情况

sxy_sdy
sxy_sdy   2016.01.25 17:32

..还有,你应该看一下什么事冒泡排序,交换也写错了。
for(int i=0;i {
for(int j=i;j {
if(a[i] > a[j])
{
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}

91program
91program   Ds   Rxr 2016.01.25 16:45

for 循环看不懂,请查一下下标是否越界了

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!