四种排序方法简单理解
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第十四次交换: 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 {