快速排序算法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&&&&&&&&&&&&&