请教:关于冒泡的两个FOR语句问题
在论坛搜索了一些关于冒泡程序的帖子,仔细看了高手的讲解,但还是觉得不能理解里面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;
}