直接选择排序法-直接插入排序法、快速排序法、堆排序法、冒泡排序发-实验_第1页
直接选择排序法-直接插入排序法、快速排序法、堆排序法、冒泡排序发-实验_第2页
直接选择排序法-直接插入排序法、快速排序法、堆排序法、冒泡排序发-实验_第3页
直接选择排序法-直接插入排序法、快速排序法、堆排序法、冒泡排序发-实验_第4页
直接选择排序法-直接插入排序法、快速排序法、堆排序法、冒泡排序发-实验_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选优质文档-倾情为你奉上#include<iostream>using namespace std;typedef int ElemType;/直接插入排序void InsertSort ( ElemType A, int n )int i, j;ElemType x;for ( i=1; i<n; i+ ) /进行n-1次插入 x = Ai; /准备插入第i个元素 for ( j=i-1; j>=0; j- ) /从第i-1个开始往前找插入点 if ( x< Aj ) Aj+1=Aj; else break; Aj+1=x; /插入/直接选择排序void Se

2、lectSort(ElemType A, int n) int i, j, k; ElemType x; for ( i=0; i<=n-2; i+ ) /每一趟选择最小元素并与Ai交换 k=i; for (j=i+1; j<=n-1; j+) /查找最小元素的下标 if (Aj<Ak) k=j; if (k!=i) /交换x=Ai; Ai=Ak; Ak=x; /堆排序void Sift(ElemType A, int n, int i);void CreatHeap(ElemType A, int n) int i; for( i = (n-2)/2; i >= 0;

3、 i-) Sift(A, n, i); /调整Ai.n-1使之为一个堆 void Sift(ElemType A, int n, int i) / 调整Ai.n-1成为一个堆(它的左右子树已是一个堆) ElemType x=Ai; int j = 2 * i + 1; / j为i的左孩子 while (j <= n-1) / i有左子树 if ( j +1 < n && Aj< Aj+1) j+; / 使j指向左右孩子中排序码大的孩子 if ( x< Aj) /将Aj上移,以便向下筛 Ai=Aj; i=j; j=2*i+1; else break; Ai

4、=x; void HeapSort(ElemType A, int n) /A为待排序表,n为表的长度 int i; ElemType x; CreatHeap(A, n); / 把A建成一个堆 for(i=n-1;i>=1;i-) x = A0; /第个元素与第i个元素交换 A0 = Ai; Ai = x; Sift(A, i, 0); /调整A0.i-1使之为一个堆 /冒泡排序void BubbleSort( ElemType A, int n )int i, j, flag; /flag为交换标记ElemType x;for (i=1; i<=n-1; i+) / 最多n-1

5、趟排序 flag=0; /假设本次没有交换 for (j=n-1; j>=i; j-) /第i 趟if ( Aj< Aj-1) flag=1; /出现交换x=Aj; Aj=Aj-1; Aj-1=x; if (flag=0) return; /快速排序void QuickSort(ElemType A, int s, int t) /递归算法,对区间As At 进行快速排序int i=s+1, j=t;ElemType temp, x = As; /第一个为基准元素while ( i<=j ) while ( i<=j && Ai<= x ) i+;

6、 /从左到右 while ( i<=j && Aj>=x) j-; /从右到左 if ( i < j ) temp=Ai; Ai=Aj; Aj=temp; i+; j-; if (s!=j) /交换基准元素 As=Aj; Aj=x; if (s<j-1) QuickSort(A, s, j-1); /处理左区间 if (j+1<t) QuickSort(A, j+1, t); /处理右区间void main() int i,j,n,N=5;cout<<"请输入个整数:" ElemType A5;for(j=0;j&l

7、t;N;j+)cin>>Aj;cout<<"排序前为:"<<endl;for(i=0;i<N;i+)cout<<Ai<<endl;cout<<"直接插入排序:"<<endl;InsertSort (A, N );for(i=0;i<N;i+)cout<<Ai<<endl;运 /运行结果如右;cout<<"直接选择排序:"<<endl;SelectSort(A, N);for(i=0;i<N;i+)cout<<Ai<<endl; cout<<"堆排序:"<<endl;HeapSort(A, N); for(i=0;i<N;i+)cout<<Ai<<endl; cout<<"冒泡排序:"<<endl; BubbleSort(A, N); for(i=0;i<N;i+)cout<<Ai<

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论