第十四次交换: 3 22 53 72 11 10 34 44 11 15 28 65……
第二趟排序: 3 10 22 53 72 11 34 44 11 15 28 65第三趟排序: 3 10 11 22 53 72 11 34 44 15 28 65……
最后趟排序: 3 10 11 11 15 22 28 34 44 53 65 72代码实现如下:
//powerd by 一意行者
#include<iostream>
#define M 100
using namespace std;
int main ()
{
int a[M];
int n,i,j;
int temp=0; //定义一个用于大小数的交换的中间变量
cin>>n;
for(i=0;i<n;i++)
{
cin>>a[i]; //初始化数组
}
for(i=0;i<n-1;i++) //一个个将大小数进行交换
{
for(j=n-1;j>i;j--)
if(a[j]<a[j-1])
{
temp=a[j];
a[j]=a[j-1];//将大数放到后面
a[j-1]=temp;
}
}
for(i=0;i<n;i++)
{
cout<<a[i]<<" ";//输出交换后的数组
}
cout<<endl;
return 0;
}
第十五次交换: 3 10 11 15 72 53 44 34 28 22 11 65第十六次交换: 3 10 11 11 72 53 44 34 28 22 15 65第四趟排序: 3 10 11 11 72 53 44 34 28 22 15 65第十七次交换: 3 10 11 11 53 72 44 34 28 22 15 65……
最后趟排序: 3 10 11 11 15 22 28 34 44 53 65 72 //powerd by 一意行者
#include<iostream>
#define M 100
using namespace std;
int main ()
{
int a[M];
int n,i,j;
int temp=0; //定义一个用于大小数的交换的中间变量
while(cin>>n)
{
for(i=0;i<n;i++)
{
cin>>a[i]; //初始化数组
}
for(i=0;i<n-1;i++) //一个个将大小数进行交换
{
for(j=i+1;j<n;j++)
if(a[i]>a[j])
{
temp=a[j];
a[j]=a[i];//将大数放到后面
a[i]=temp;
}
}
for(i=0;i<n;i++)
{
cout<<a[i]<<" ";//输出交换后的数组
}
}
cout<<endl;
return 0;
}
//powerd by 一意行者
#include<iostream>
#define M 100
using namespace std;
int main ()
{
int a[M];
int n,i,j;
int temp=0;//定义一个用于大小数的交换的中间变量
int flag=0;//定义一个标记
while(cin>>n)
{
for(i=0;i<n;i++)
{
cin>>a[i]; //初始化数组
}
for(i=0;i<n-1;i++)
{
temp=a[i];
flag=i; //标记第一个元素
for(j=i+1;j<n;j++) //依次遍历下面的数找出最小的那个数if(temp>a[j])
{
temp=a[j];
flag=j;//标记出最小的那个数的位置
}
a[flag]=a[i];//将数依次赋值找出最小的那个数
a[i]=temp;
}
for(i=0;i<n;i++)
{
cout<<a[i]<<" ";//输出交换后的目的数组
}
}
cout<<endl;
return 0;
}
从上面的叙述可见,它的基本工作原理是抽出牌,在前面的牌中寻找相应的位置插入,然后继续下一张。
//powerd by 一意行者
#include<iostream>
#define M 100
using namespace std;
int main ()
{
int a[M];
int n,i;
int temp;//定义一个中间变量用来保存待交换数据
int m; //用来记录每次的循环次数
while(cin>>n)
{
for(i=0;i<n;i++)
{
cin>>a[i]; //初始化数组
}
for(i=1;i<n;i++)
{
temp=a[i];
m=i-1; //i前面的点
while(m>=0&&temp<a[m])
{
a[m+1]=a[m];//将较大的数据放到后面去
m--;
}
a[m+1]=temp;//每次都把较小的数放到前面
}
for(i=0;i<n;i++)
{
cout<<a[i]<<" ";//输出交换后的目的数组
}
}
cout<<endl;
return 0;
}
注!由于笔者水平有限,暂时只能写出如上四种。
且上述方法必有疏漏之处,还请读者斧正!以上代码运行环境为VC6.0或dev c++。
QQ交流平台:1536538355(一意行者)。