交换排序和归并排序

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

1、交换排序

1)气泡排序(bubble sorting)

也是一种简单排序方法,T(n)=O(n2)

算法:A[n],第一次排序区间为A[0]~A[n-1],第二次排序区间为A[1]~A[n-1,]…,最后一次排序区间为A[n-2]~A[n-1],每次排序轻者上浮,即排序区间最小者交换到排序区间的第一个位置,经n-1次排序。完成排序过程。

Example 1

#include

using namespace std;

struct ET

{

int x;

};

void select(ET A[],int n)

{

ET e;

for(int i=0;i

{

for(int j=i+1;j

{

if(A[i].x>A[j].x)

{

e=A[i];

A[i]=A[j];

A[j]=e;

}

}

}

}

void display(ET a[],int n)

{

for(int i=0;i

{

cout<

}

cout<<"\n";

}

void main()

{

ET a[10];

/* a[0].x=100;

a[1].x=20;

a[2].x=15;

a[3].x=50;

a[4].x=200;

a[5].x=80;

a[6].x=300;

a[7].x=10; */

for(int i=0;i<10;i++)

{

a[i].x=rand()/100;

}

cout<<"\n===========排序前====================\n\n";

display(a,10);

cout<<"\n===========排序后====================\n\n";

select(a,10);

display(a,10);

cout<

}

Examplae 2

#include

using namespace std; struct ET

{

int no;

char* name;

char* sex;

double score;

};

void insertSort(ET A[],int n) {

ET x;

for(int i=0;i

{

for(int j=i+1;j

{

if(A[i].no>A[j].no)

{

x=A[i];

A[i]=A[j];

A[j]=x;

}

}

}

}

void insertSort1(ET A[],int n) {

ET x;

for(int i=0;i

{

for(int j=i+1;j

{

if(A[i].score>A[j].score)

{

x=A[i];

A[i]=A[j];

A[j]=x;

}

}

}

}

void display(ET e[8])

{ for(int i=0;i<8;i++)

{

cout.width(6);

cout<

cout.width(12);

cout<

cout.width(6);

cout<

cout.width(6);

cout<

}

}

void main()

{

ET a[8];

a[0].no=36;

a[0].name="Bill Gates";

a[0].sex="男";

a[0].score=100;

a[1].no=25;

a[1].name="FF Gates";

a[1].sex="女";

a[1].score=98;

a[2].no=48;

a[2].name="Lucy Gates";

a[2].sex="男";

a[2].score=77;

a[3].no=12;

a[3].name="Jack Gates";

a[3].sex="男";

a[3].score=88;

a[4].no=65;

a[4].name="GG Gates";

a[4].sex="女";

a[4].score=66;

a[5].no=43;

a[5].name="BB Gates";

a[5].sex="男"; a[5].score=99;

a[6].no=20;

a[6].name="KK Gates";

a[6].sex="男";

a[6].score=78;

a[7].no=58;

a[7].name="PP Gates";

a[7].sex="男";

a[7].score=99;

cout<<"\n========排序前========================\n\n"; display(a);

insertSort(a,8);

cout<<"\n========排序后(按学号排序)==============\n\n"; display(a);

insertSort1(a,8);

cout<<"\n========排序后(按学分排序)==============\n\n"; display(a);

相关文档
最新文档