请教:关于冒泡的两个FOR语句问题

skysheep3 2005-12-13 08:53:52
在论坛搜索了一些关于冒泡程序的帖子,仔细看了高手的讲解,但还是觉得不能理解里面FOR语句的原理,小弟有以下几个问题想发问:
1.两个FOR语句是同时执行还是先外再内?
2.到底内外FOR语句是怎样比较?能不能请高手们讲详细点?
3.下面贴了一个冒泡的程序,关于这两个FOR语句for(segment=0;segment<=length-2;segment++){for(loop=length-2;loop>=segment;loop--),为什么外FOR是length-2而不是length-1?
希望各位能救我于水火之中,多谢各位了!!!


//程序:bubble.cpp
//功能:用冒泡算法将数据排序后输出

#include<iostream.h>

//功能:用冒泡算法将数组中的数据排序
//参数:data--存放数据的数组
// length--数组的长度
void bubble(int data[],int length){
int segment; //循环扫描数组的下标变量
int loop; //循环扫描部分数组的下标变量
int temp; //用于交换数据时做缓冲的临时变量

//将数组分段,逐段将数据冒泡排序
for(segment=0;segment<=length-2;segment++){
//将当前段(segment到length-1)中的最小数据浮到最上
for(loop=length-2;loop>=segment;loop--){
if(data[loop+1]<data[loop]){ //如果下一个数据更小则交换上来
temp=data[loop];
data[loop]=data[loop+1];
data[loop+1]=temp;
}
}
}

}

int main(){
const int max_nums=8; //程序要处理数据的个数作为符号常量
int data[max_nums]; //存放数据的数组
int loop; //循环扫描数组的下标变量

//由用户输入一些数据
cout<<"Input"<<max_nums<<"numbers to sort:\n";
for(loop=0;loop<=max_nums-1;loop++){
cout<<"No."<<loop+1<<":";
cin>>data[loop];
}

//对数据排序
bubble(data,max_nums);

//讲排序后的数据输出
cout<<"After sorting:\n";
for(loop=0;loop<=max_nums-1;loop++){
cout<<"No."<<loop+1<<":"<<data[loop]<<endl;
}
return 0;
}
...全文
224 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
pbdwadr 2005-12-15
  • 打赏
  • 举报
回复
1.两个FOR语句是同时执行还是先外再内?
----------------------------------------
把第二个for语句当作第一个的一个执行的句子用...
-------------------------------------------
2.到底内外FOR语句是怎样比较?能不能请高手们讲详细点?
----------------------------------------
把第二个for语句当作第一个的一个执行的句子用...,很简单的,就算是10个也这样想。
-------------------------------------------
Mr_Yang 2005-12-15
  • 打赏
  • 举报
回复
学习
ugvihc 2005-12-15
  • 打赏
  • 举报
回复
因为是小于等于,所以就-2了:)
skysheep3 2005-12-15
  • 打赏
  • 举报
回复
小弟终于搞明白啦!!!谢谢各位指点!!!!
goodluckyxl 2005-12-14
  • 打赏
  • 举报
回复
http://community.csdn.net/Expert/topic/4440/4440723.xml?temp=.3455774
dx30611 2005-12-13
  • 打赏
  • 举报
回复
两个for语句就是嵌套循环,外面循环一次,里面的for要全部执行完
dx30611 2005-12-13
  • 打赏
  • 举报
回复
data[loop+1]<data[loop]
这里已经有loop+1,所以当是length-2时将length-2和length-1比较,所以一样的
dx30611 2005-12-13
  • 打赏
  • 举报
回复
每执行外面的一次循环,就找到一个最大的或者最小的数(视程序功能而定),执行第2次找到第2大或者第2小的数,依次将所有的数都按顺序排列

33,317

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧