实验名称:排序
学号:
姓名:
实验日期:2016.07.01
一、实验目的
至少掌握一种排序算法
二、实验内容
随机生成10个从1-100之间的随机数,编程实现至少一种排序算法,对该数据进行排序。
要求
1、要排序的数据随机生成
2、先升序排序一次,再用同样的算法降序排序一次
(2)分析
(3)实验代码
#include #include #include typedef struct { int key; }keytype; typedef struct { keytype r[1000]; int length; }sqlist; /*产生随机数*/ void creat(sqlist *l) { int i; printf("请输入要产生的随机数个数:"); scanf("%d",&l->length); srand((unsigned)time(NULL)); for(i=1;i<=l->length;i++) { l->r[i].key = rand() %900+100; printf("%d ",l->r[i].key); } printf("\\n"); } /*交换顺序表中子表r[low...high]的记录,使枢轴记录到位,并返回其所在的位置*/ int partion(sqlist *l,int low,int high) { int pivotkey; l->r[0]=l->r[low]; pivotkey=l->r[low].key; while(low l->r[low]=l->r[high]; while(low l->r[high]=l->r[low]; } l->r[low]=l->r[0]; return low; } /*快速排序*/ void Qsort(sqlist *l,int low,int high) { int pivotloc; if(low Qsort(l,low,pivotloc-1); Qsort(l,pivotloc+1,high); } } /*显示顺序表*/ void display(sqlist *l) { int i; for(i=1;i<=l->length;i++) printf("%-4.2d",i); printf("\\n"); for(i=1;i<=2*l->length;i++) printf("--"); printf("\\n"); for(i=1;i<=l->length;i++) printf("%-4.2d",l->r[i].key); } /*主函数*/ void main() { sqlist t; creat(&t); Qsort(&t,1,t.length); printf("\\n\\n"); printf("快速排序:\\n"); display(&t); } 三、实验小结