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

有条程序看不懂

ZJSZJS 发布于 2013-05-28 23:16, 1000 次点击
这是一个排序的例题。思路理不清,分析一下。


#include<iostream.h>
void main()
{
    int a[6]={1,2,3,4,5,6};
    int i,j,t,p;
    for(i=0;i<5;i++)
    {
        p=i;
        for(j=i+1;j<6;j++)
            if(a[p]>a[j])
                p=j;
            i+(i!=p);/////这句是什么意思?加在这里有什么用吗 ?
            {
                t=a[i];
                a[i]=a[p];
                a[p]=t;
            }
    }
    cout<<"排序后的数组为:\n";
    for(i=0;i<6;i++)
        cout<<"  "<<a[i]<<"\t";
}
10 回复
#2
ydown2013-05-29 08:32
应该是 if(i!=p)吧,
书上印刷出问题了,f少头变成+了.
#3
子楠2013-05-29 15:27
#include<iostream.h>
void main()
{
    int a[6]={1,2,3,4,5,6};
    int i,j,t;
    for(i=0;i<5;i++)
    {
        for(j=i+1;j<6;j++)
            if(a[i]>a[j])
            {                                     {
                t=a[i];
                a[i]=a[j];
                a[j]=t;
            }
    }
    cout<<"排序后的数组为:\n";
    for(i=0;i<6;i++)
        cout<<"  "<<a[i]<<"\t";
}
改成这样吧,书上的不对,不知道它什么意思(选择排序)
#4
ZJSZJS2013-05-30 12:39
回复 3楼 子楠
谢了,我用你的运行一下看看怎么样。但是书上的也可以运行的
#5
ZJSZJS2013-05-30 12:40
回复 2楼 ydown
没有像那样组合的语句?
#6
ydown2013-05-31 08:27
程序代码:
//冒泡排序法,本例将数组从大到小排序.
#include<iostream>
using namespace std;
void main()
{
    int a[6]={1,2,3,4,5,6};
    int i,j,temp;            //i,j循环控制变量及数组下标控制变量,temp就是交换用的临时变量.
    for(i=0;i<5;i++)
    {
        for(j=1;j<=5-i;j++)    //依次对比数组第1轮对比5次,6个数参与对比,产生最小数就在最右边,下轮循环只需5个数对比4次(每轮循环依次递减对比次数).
        {
            if(a[j-1]<a[j])    //对比2个数,左边的数比右边的小,就交换位置,即将小的数放在右边,每次循环下来后,就把最小的数放在了右边
            {
                temp=a[j-1];
                a[j-1]=a[j];
                a[j]=temp;
            }
        }
    }
    cout<<"排序后的数组为:\n";
    for(i=0;i<6;i++)
        cout<<"  "<<a[i]<<"\t";
}


[ 本帖最后由 ydown 于 2013-5-31 08:28 编辑 ]
#7
RobinWang2013-06-03 22:25
回复 楼主 ZJSZJS
这是一个bool类型,意思是如果i=p,则执行i+1,否则执行i+0。但是在这个程序中这个是多余的。
#8
李沫沫2013-06-05 21:25
回复 6楼 ydown
为什么是for(i<5)而不是(i<6)呢,上面定义的不是6个数吗
#9
haoyasen2013-06-05 22:25
回复 8楼 李沫沫
大的循环是五次
#10
子楠2013-06-06 12:24
回复 8楼 李沫沫
两个两个比较,外循环(从第一个数开始到倒数第二个数,最后一个数没有与它可比较的数了)
好好想一下冒泡的这个思路
#11
李沫沫2013-06-06 17:09
回复 10楼 子楠
en .谢了额、、、
1