| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 990 人关注过本帖
标题:有条程序看不懂
只看楼主 加入收藏
ZJSZJS
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2013-3-26
结帖率:0
收藏
 问题点数:0 回复次数:10 
有条程序看不懂
这是一个排序的例题。思路理不清,分析一下。


#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";
}
搜索更多相关主题的帖子: include 
2013-05-28 23:16
ydown
Rank: 2
等 级:论坛游民
帖 子:31
专家分:92
注 册:2013-5-27
收藏
得分:0 
应该是 if(i!=p)吧,
书上印刷出问题了,f少头变成+了.
2013-05-29 08:32
子楠
Rank: 3Rank: 3
来 自:武汉
等 级:论坛游侠
帖 子:111
专家分:164
注 册:2013-4-9
收藏
得分:0 
#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";
}
改成这样吧,书上的不对,不知道它什么意思(选择排序)
2013-05-29 15:27
ZJSZJS
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2013-3-26
收藏
得分:0 
回复 3楼 子楠
谢了,我用你的运行一下看看怎么样。但是书上的也可以运行的
2013-05-30 12:39
ZJSZJS
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2013-3-26
收藏
得分:0 
回复 2楼 ydown
没有像那样组合的语句?
2013-05-30 12:40
ydown
Rank: 2
等 级:论坛游民
帖 子:31
专家分:92
注 册:2013-5-27
收藏
得分:0 
程序代码:
//冒泡排序法,本例将数组从大到小排序.
#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 编辑 ]
2013-05-31 08:27
RobinWang
Rank: 3Rank: 3
来 自:北京
等 级:论坛游侠
帖 子:69
专家分:121
注 册:2013-5-31
收藏
得分:0 
回复 楼主 ZJSZJS
这是一个bool类型,意思是如果i=p,则执行i+1,否则执行i+0。但是在这个程序中这个是多余的。

将压抑的青春能量转化为改造中国的动力!
2013-06-03 22:25
李沫沫
Rank: 2
来 自:唐山
等 级:论坛游民
帖 子:35
专家分:13
注 册:2013-3-14
收藏
得分:0 
回复 6楼 ydown
为什么是for(i<5)而不是(i<6)呢,上面定义的不是6个数吗

沫沫、努力学习呀!c++我来了!
2013-06-05 21:25
haoyasen
Rank: 2
等 级:论坛游民
帖 子:90
专家分:20
注 册:2013-3-30
收藏
得分:0 
回复 8楼 李沫沫
大的循环是五次
2013-06-05 22:25
子楠
Rank: 3Rank: 3
来 自:武汉
等 级:论坛游侠
帖 子:111
专家分:164
注 册:2013-4-9
收藏
得分:0 
回复 8楼 李沫沫
两个两个比较,外循环(从第一个数开始到倒数第二个数,最后一个数没有与它可比较的数了)
好好想一下冒泡的这个思路
2013-06-06 12:24
快速回复:有条程序看不懂
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017319 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved