快速排序实验报告 c语言,快速排序算法c语言实验报告.docx

快速排序算法c语言实验报告

实验六:冒泡法排序  物理学416班赵增月F12XX日期:XX年10月31日  一·实验目的1.熟练掌握程序编写步骤;  2.学习使用冒泡法和选择法排序;  3.熟练掌握数组的定义和输入输出方法。  二·实验器材  1.电子计算机;  三·实验内容与流程  1.流程图  冒泡法  (2)选择法2.输入程序如下:冒泡法#includevoidmain(){inta[10];inti,j,t;printf("请输入10个数字:\n");for(i=0;ia[i+1]){t=a[i];a[i]=a[i+1];a[i+1]=t;}printf("排序后如下:\n");for(i=0;ivoidmain(){inta[10];inti,j,t,k;printf("请输入10个数字:\n");for(i=0;ia[j])k=j;t=a[i];a[i]=a[k];a[k]=t;}  printf("排序后如下:\n");for(i=0;i  #include  #include  #include  #definerandx(x)(rand()%x)  typedefintKeyType;  typedefintDataType;  typedefstruct  {  KeyTypekey;/*排序码字段*/  DataTypeinfo;/*记录的其它字段*/  }RecordNode;  typedefstruct  {  intn;/*文件中的记录个数,可以视为常量*/  RecordNode*record;  }SortObject;  voidcreatsort(SortObject*pvector,int&l,int&r)//新建二叉排序树  {  inti;intk;  printf("您即将要创建一个序列\n");  printf("\n请输入该序列元素的个数\n");  scanf("%d",&pvector->n);  pvector->record=(RecordNode*)malloc((sizeof(RecordNode))*(pvector->n));  printf("\n你要以什么方式创建序列?\n方式1:自动创建请输入1,方式2:手动创建请输入0\n");  scanf("%d",&k);  if(k)  {  srand((int)time(0));  for(i=0;in;i++)  {  if(pvector->nrecord[i].key=randx(100);  elseif((pvector->nrecord[i].key=randx(1000);  else  pvector->record[i].key=randx(pvector->n);  }  }  else  {  printf("\n请输入%d个大小不一样的整数\n",pvector->n);  for(i=0;in;i++){scanf("%d",&pvector->record[i].key);}}if(pvector)printf("\n序列创建成功!\n");else  printf("\n序列创建失败!\n");  l=0,r=pvector->n-1;  }  voidshow(SortObject*pvector)  {  printf("\n当前序列为:\n");  if(!pvector)  printf("当前序列为空");  else  for(inti=1;in;i++)  {  printf("%d",pvector->record[i-1].key);  if(i%15==0)  printf("\n");  }  printf("\n");  }  voidquickSort(SortObject*&pvector,intl,intr)  {  inti,j;  RecordNodetemp,*data=pvector->record;  if(l>=r)  return;/*只有一个记录或无记录,则无须排序*/i=l;  j=r;  temp=data[i];  while(i!=j)  {/*找Rl的最终位置*/  while(i=)  j--;/*向左扫描找排序码小于的记录*/if(i,i-1);/*递归处理左区间*/  quickSort(pvector,i+1,r);/*递归处理右区间*/  }  voidinterface(void)  {  printf("\n&&&&&&&&&&&&&

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值