以前初中有学过点c,但是最近发现那个原来的“冒泡”很是不对劲,但是思来想去想不明白,求教!!!
#include<iostream>
#include<stdlib.h>
using namespace std;
int main(){
#define num 7
int a[num];
cout<<"请依次输入数组元素(num个)"<<endl;
int i;
int j;
int t;
for(int i = 0;i<num;i++)
cin>>a[i];
/*for(i= 0;i<num;i++) //冒泡法一 (初中学的那个)
for(j=0;j<num;j++)
if(a[i]>a[j]){
t=a[j];
a[j]=a[i];
a[i]=t;
}*/
for(i= 0;i<num;i++) //冒泡二
for(j=0;j<num;j++)
if(a[j]>a[j+1]){
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
cout<<"排序结果为:"<<endl;
for(i=0;i<num;i++)
cout<<a[i]<<" ";
system("pause");
return 0;
}
疑惑:如果使用排序一的话,结果竟然不是按照从大到小进行排序的?为什么?
还有就是我用笔进行一的模拟,但是是不能达到正确结果的,编译出来却是可以?
下为图例: