欢迎来到天天文库
浏览记录
ID:53708270
大小:76.50 KB
页数:4页
时间:2020-04-06
《快速排序法(C语言).doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、#include#include#include#include#definerandx(x)(rand()%x)typedefintKeyType;typedefintDataType;typedefstruct{KeyTypekey;/*排序码字段*/DataTypeinfo;/*记录的其它字段*/}RecordNode;typedefstruct{intn;/*文件中的记录个数,可以视为常量*/RecordNode*record;}SortObject;voidcreatsort(SortObject
2、*pvector,int&l,int&r)//新建二叉排序树{inti;intk;printf("您即将要创建一个序列");printf("请输入该序列元素的个数");scanf("%d",&pvector->n);pvector->record=(RecordNode*)malloc((sizeof(RecordNode))*(pvector->n));printf("你要以什么方式创建序列?方式1:自动创建请输入1,方式2:手动创建请输入0");scanf("%d",&k);if(k){srand((int)time(0));for(i=0;i3、ctor->n;i++){if(pvector->n<100)pvector->record[i].key=randx(100);elseif((pvector->n<1000))pvector->record[i].key=randx(1000);elsepvector->record[i].key=randx(pvector->n);}}else{printf("请输入%d个大小不一样的整数",pvector->n);for(i=0;in;i++){scanf("%d",&pvector->record[i].key);}}if(pvector)p4、rintf("序列创建成功!");elseprintf("序列创建失败!");l=0,r=pvector->n-1;}voidshow(SortObject*pvector){printf("当前序列为:");if(!pvector)printf("当前序列为空");elsefor(inti=1;i<=pvector->n;i++){printf("%d",pvector->record[i-1].key);if(i%15==0)printf("");}printf("");}voidquickSort(SortObject*&pvector,in5、tl,intr){inti,j;RecordNodetemp,*data=pvector->record;if(l>=r)return;/*只有一个记录或无记录,则无须排序*/i=l;j=r;temp=data[i];while(i!=j){/*找Rl的最终位置*/while(i=temp.key)j--;/*向左扫描找排序码小于temp.key的记录*/if(i6、[j--]=data[i];}data[i]=temp;/*将Rl存入其最终位置*/quickSort(pvector,l,i-1);/*递归处理左区间*/quickSort(pvector,i+1,r);/*递归处理右区间*/}voidinterface(void){printf("&&&&&&&&&&&&&&输入序号执行相应操作&&&&&&&&&&&&&&&&&");printf("输入1,重新建立序列!");printf("---------------------------------------------------");printf("输入2,快速7、排序当前序列!");printf("---------------------------------------------------");printf("输入3,显示当前序列!");printf("---------------------------------------------------");printf("输入其他,退出操作!");printf("-----------------------------------------------
3、ctor->n;i++){if(pvector->n<100)pvector->record[i].key=randx(100);elseif((pvector->n<1000))pvector->record[i].key=randx(1000);elsepvector->record[i].key=randx(pvector->n);}}else{printf("请输入%d个大小不一样的整数",pvector->n);for(i=0;in;i++){scanf("%d",&pvector->record[i].key);}}if(pvector)p
4、rintf("序列创建成功!");elseprintf("序列创建失败!");l=0,r=pvector->n-1;}voidshow(SortObject*pvector){printf("当前序列为:");if(!pvector)printf("当前序列为空");elsefor(inti=1;i<=pvector->n;i++){printf("%d",pvector->record[i-1].key);if(i%15==0)printf("");}printf("");}voidquickSort(SortObject*&pvector,in
5、tl,intr){inti,j;RecordNodetemp,*data=pvector->record;if(l>=r)return;/*只有一个记录或无记录,则无须排序*/i=l;j=r;temp=data[i];while(i!=j){/*找Rl的最终位置*/while(i=temp.key)j--;/*向左扫描找排序码小于temp.key的记录*/if(i6、[j--]=data[i];}data[i]=temp;/*将Rl存入其最终位置*/quickSort(pvector,l,i-1);/*递归处理左区间*/quickSort(pvector,i+1,r);/*递归处理右区间*/}voidinterface(void){printf("&&&&&&&&&&&&&&输入序号执行相应操作&&&&&&&&&&&&&&&&&");printf("输入1,重新建立序列!");printf("---------------------------------------------------");printf("输入2,快速7、排序当前序列!");printf("---------------------------------------------------");printf("输入3,显示当前序列!");printf("---------------------------------------------------");printf("输入其他,退出操作!");printf("-----------------------------------------------
6、[j--]=data[i];}data[i]=temp;/*将Rl存入其最终位置*/quickSort(pvector,l,i-1);/*递归处理左区间*/quickSort(pvector,i+1,r);/*递归处理右区间*/}voidinterface(void){printf("&&&&&&&&&&&&&&输入序号执行相应操作&&&&&&&&&&&&&&&&&");printf("输入1,重新建立序列!");printf("---------------------------------------------------");printf("输入2,快速
7、排序当前序列!");printf("---------------------------------------------------");printf("输入3,显示当前序列!");printf("---------------------------------------------------");printf("输入其他,退出操作!");printf("-----------------------------------------------
此文档下载收益归作者所有