数据结构实验快速排序汇编
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验报告实验名称排序
课程名称数据结构与算法实验
|
|
专业班级:信息安全
学号:
姓名:
一、实验目的
掌握快速排序
二、实验内容
1、快速排序
编写程序,实现快速排序。从键盘上输入10个整数,存放在数组中,然后用快速排序法对其从小到大进行排序,并输出排序结果。
2、堆排序
编写程序,实现堆排序。从键盘上输入10个整数,存放在数组中,然后用堆排序法对其从小到大进行排序,并输出排序结果。
三、主要算法与结构
//快速排序
int QuickSort(int a[],int l,int r)
{
int pivot; //枢轴
int i=l;
int j=r;
int tmp;
pivot=a[(l+r)/2];//取数组中间的数为枢轴
do {
while (a[i] while (a[j]>pivot) j--; // j左移 if (i<=j) { tmp=a[i]; a[i]=a[j]; a[j]=tmp; //交换a[i]和a[j] i++; j--; } } //堆排序 void sift (int a[],int size ,int p) { int tmp= a[p]; int child=2*p+1; while(child { if((child child++; if(tmp { a[p]=a[child]; p=child; child=2*p+1; } else break; } a[p]=tmp; } void heapsort( int a[], int n) { int i, tmp; for(i=n/2-1;i>=0;i--) sift(a, n,i); for( i=n-1;i>0;i--) { tmp=a[0]; a[0]=a[i]; a[i]=tmp; sift(a, i,0); } } 四、实验代码 //快速排序 #include #define MAX 10 int QuickSort(int a[],int l,int r) { int pivot; //枢轴 int i=l; int j=r; int tmp; pivot=a[(l+r)/2];//取数组中间的数为枢轴 do { while (a[i] while (a[j]>pivot) j--; // j左移 if (i<=j) { tmp=a[i]; a[i]=a[j]; a[j]=tmp; //交换a[i]和a[j] i++; j--; } } while(i<=j); if (l if (i return 1; } /*********************************************/ int main() { int array[MAX]; int i; cout<<"请输入"< for (i=0;i cin>>array[i]; QuickSort(array,0,MAX-1); cout<<"快速排序后:"< for (i=0;i cout< cout< return 0; } //堆排序 #include #define MAX 10 using namespace std; void sift (int a[],int size ,int p) { int tmp= a[p]; int child=2*p+1; while(child { if((child child++; if(tmp { a[p]=a[child]; p=child; child=2*p+1; } else break; } a[p]=tmp; } void heapsort( int a[], int n) { int i, tmp; for(i=n/2-1;i>=0;i--) sift(a, n,i); for( i=n-1;i>0;i--) { tmp=a[0]; a[0]=a[i]; a[i]=tmp; sift(a, i,0); }} void main () { int i; int a[MAX]; cout<<"请输入"< cin>>a[i]; heapsort(a,MAX); cout<<"经堆排序后:"< for( i=0;i cout< } 五、实验结果 //快速排序 //堆排序