生成一组无序关键字,用C语言输出快速排序过程中消耗的额外空间
1条回答 默认 最新
- fuill 2022-06-13 19:36关注
解答如下
#include<stdio.h> #include<stdlib.h> #include<time.h> #define N 200000 #define MAX 1000 int t[N]; int count=0; int Ysort(int arr[],int n)//检测排序完成 { int i=0; while(i<n-1) { if(arr[i]>arr[i+1]) return 78; i++; } return 89; } void prin(int t[],int begin,int end) { while(begin<=end) printf(" %d ",t[begin++]); printf("\n"); } void QuickSort(int t[],int Begin,int End)//快速排序 { if(Begin>=End) return; count+=End-Begin; int Left=Begin,Right=End; int tem=t[Begin]; while(Begin<End) { while(Begin<End&&t[End]>=tem) { End--; } t[Begin]=t[End]; while(Begin<End&&t[Begin]<=tem) { Begin++; } t[End]=t[Begin]; } t[Begin]=tem; QuickSort(t,Left,Begin-1); QuickSort(t,Begin+1,Right); } int main() { int i; int n=N; int max=MAX; printf("Size:%d\n",n); printf("Max :%d\n",max); for( i = 0; i < N; i++) { t[i] = rand()%MAX; } printf("%c \n",Ysort(t,n)); int begintime,endtime; begintime=clock(); QuickSort(t,0,n-1); endtime = clock(); printf("\n\nSort Running Time:%dms\n", endtime-begintime); printf("This is QuickSort.\n"); printf("%c \n",Ysort(t,n)); printf("消耗内存:%.3lf MB\n",(double)sizeof(int)*count/1048576); return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥15 请问有人会紧聚焦相关的matlab知识嘛?
- ¥15 网络通信安全解决方案
- ¥50 yalmip+Gurobi
- ¥20 win10修改放大文本以及缩放与布局后蓝屏无法正常进入桌面
- ¥15 itunes恢复数据最后一步发生错误
- ¥15 关于#windows#的问题:2024年5月15日的win11更新后资源管理器没有地址栏了顶部的地址栏和文件搜索都消失了
- ¥100 H5网页如何调用微信扫一扫功能?
- ¥15 讲解电路图,付费求解
- ¥15 有偿请教计算电磁学的问题涉及到空间中时域UTD和FDTD算法结合的
- ¥15 three.js添加后处理以后模型锯齿化严重