四种排序方法简单理解
- 格式:doc
- 大小:67.50 KB
- 文档页数:8
第十四次交换: 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
#define M 100
using namespace std;
int main ()
{
int a[M];
int n,i,j;
int temp=0; //定义一个用于大小数的交换的中间变量
cin>>n;
for(i=0;i { cin>>a[i]; //初始化数组 } for(i=0;i { for(j=n-1;j>i;j--) if(a[j] { temp=a[j]; a[j]=a[j-1];//将大数放到后面 a[j-1]=temp; } } for(i=0;i { cout< } cout< 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 #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 { cin>>a[i]; //初始化数组 } for(i=0;i { for(j=i+1;j if(a[i]>a[j]) { temp=a[j]; a[j]=a[i];//将大数放到后面 a[i]=temp; } } for(i=0;i { cout< } } cout< return 0; } //powerd by 一意行者 #include #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 { cin>>a[i]; //初始化数组 } for(i=0;i { temp=a[i]; flag=i; //标记第一个元素 for(j=i+1;j { temp=a[j]; flag=j;//标记出最小的那个数的位置 } a[flag]=a[i];//将数依次赋值找出最小的那个数 a[i]=temp; } for(i=0;i { cout< } } cout< return 0; } 从上面的叙述可见,它的基本工作原理是抽出牌,在前面的牌中寻找相应的位置插入,然后继续下一张。 //powerd by 一意行者 #include #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 { cin>>a[i]; //初始化数组 } for(i=1;i { temp=a[i]; m=i-1; //i前面的点 while(m>=0&&temp { a[m+1]=a[m];//将较大的数据放到后面去 m--; } a[m+1]=temp;//每次都把较小的数放到前面 } for(i=0;i {