![]() |
#2
点线面2011-01-07 10:45
![]() #include <iostream> 作了小小的修改,顺便加注释#include <cstdlib> #include <ctime> #include <conio.h> using namespace std; int main() { srand((time(0))); const int M = 20; int i,j,a[M],m; bool Bool; for(i=0;i<M;a[i]=rand()%100+1,i++); //生成M个随机数 for(i=0;i<M;i++) //打印M个数据 cout<<a[i]<<" "; cout<<'\n'; i=0; do{ Bool = false; for(j=i;j<M-1-i;j++) //将最大放在右边,适当收窄范围 if(a[j] > a[j+1]) { a[j] = a[j]+a[j+1]; //两个数交换,另一种方法 a[j+1] = a[j]-a[j+1]; a[j] = a[j]-a[j+1]; Bool = true; } if(Bool == true) //如果没有排序,就结束任务 { Bool = false; for(m = M-2-i ; m > i; m --) //将最小放在左边,适当收窄范围 if( a[m] < a[m-1] ) { a[m] = a[m]^a[m-1]; //两个数交换,另一种方法 a[m-1] = a[m]^a[m-1]; a[m] = a[m]^a[m-1]; Bool = true; } } i++; }while(Bool); //如果没有排序,就结束任务 for(i=0;i<M;i++) //打印排好的M个数据 cout<<a[i]<<" "; getch(); return 0; } |

#include <iostream>
#include <cstdlib>
#include <ctime>
#include <conio.h>
using namespace std;
int main()
{
srand((time(0)));
const int M = 20;
int i,j,a[20],temp,m;
bool Bool;
for(i=0;i<M;a[i]=rand()%100+1,i++);
for(i=0;i<M;i++)
cout<<a[i]<<" ";
cout<<'\n';
i=0;
do{
Bool = false;
for(j=i;j<M-1-i;j++)
if(a[j] > a[j+1])
{
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
Bool = true;
}
if(Bool == true)
{
Bool = false;
for(m = M-2-i ; m > i; m --)
if( a[m] < a[m-1] )
{
temp = a[m];
a[m] = a[m-1];
a[m-1] = temp;
Bool = true;
}
}
i++;
}while(Bool);
for(i=0;i<M;i++)
cout<<a[i]<<" ";
getch();
return 0;
}
有什么建意可以提出来#include <cstdlib>
#include <ctime>
#include <conio.h>
using namespace std;
int main()
{
srand((time(0)));
const int M = 20;
int i,j,a[20],temp,m;
bool Bool;
for(i=0;i<M;a[i]=rand()%100+1,i++);
for(i=0;i<M;i++)
cout<<a[i]<<" ";
cout<<'\n';
i=0;
do{
Bool = false;
for(j=i;j<M-1-i;j++)
if(a[j] > a[j+1])
{
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
Bool = true;
}
if(Bool == true)
{
Bool = false;
for(m = M-2-i ; m > i; m --)
if( a[m] < a[m-1] )
{
temp = a[m];
a[m] = a[m-1];
a[m-1] = temp;
Bool = true;
}
}
i++;
}while(Bool);
for(i=0;i<M;i++)
cout<<a[i]<<" ";
getch();
return 0;
}
[ 本帖最后由 点线面 于 2011-1-7 09:56 编辑 ]