文档详情

实验八查找与排序算法的实现和应用.doc

发布:2015-09-14约3.61千字共5页下载文档
文本预览下载声明
实验八程序源码: #includestdio.h //#includeconio.h #includeprocess.h typedef int table; typedef int keytype; #define max 100 char caidan() { char ch; do { printf(\n************************************************\n); printf(1:按1 创建一个链表\n); printf(2:按2顺序查找\n); printf(3:按3二分法查找\n); printf(4:按4插入排序\n); printf(5:按5快速查找\n); printf(6:按6选择堆积排序法\n); printf(7:按7显示\n); printf(8:按8退出\n); printf(请选择操作:); printf(\n************************************************\n); }while(ch=getch(),ch!=1ch!=2ch!=3ch!=4ch!=5ch!=6ch!=7ch!=8); return(ch); } int CreatList(table R[]) { int i,n; printf(请输入元素个数:); scanf(%d,n); for(i=0;in;i++) { printf(Data[%d]:,i); scanf(%d,R[i]); } return n; } void Display(table R[],int n) { int i; for(i=0;in;i++) printf(\nData[%d]:%d,i,R[i]); } int SeqSearch(table R[],keytype K,int n) { int i; R[n]=K; i=0; while(R[i]!=K)i++; if(i==n)return(-1); else return i; } int BinSearch(table R[],keytype K,int n) { int low,mid,high; low=0; high=n-1; while(low=high) { mid=(low+high)/2; if(K==R[mid])return mid; if(KR[mid])high=mid-1; else low=mid+1; } return(-1); } void InsertSort(table R[],int n) { int i,j,item; for(i=0;in;i++) { item=R[i]; j=i-1; while(itemR[j]j=0) { R[j+1]=R[j]; j--; } R[j+1]=item; } } int Partition(table r[],int s,int t) { int x,i,j; table rp; i=s;j=t;rp=r[s];x=r[s]; while(ij) { while(ijr[j]=x) j--; r[i]=r[j]; while(ijr[i]=x)i++; r[j]=r[i]; } r[i]=rp; return i; } void QuickSort(table r[],int s,int t) { int k; if(st) { k=Partition(r,s,t); QuickSort(r,s,k-1); QuickSort(r,k+1,t); } } void sift(table R[],int i,int nLength) { int nChild; table nTemp; for (nTemp=R[i];2*i+1nLength;i=nChild) {
显示全部
相似文档