线性表在顺序存储结构与链式存储结构下的顺序查找算法: #include
int a[99],b,i=0,j,k,x;
printf(\确定数组长度(1-100):\ scanf(\ for(i=0;i
printf(\请输入第%d个数:\ scanf(\ }
printf(\请输入要查找的元素:\ scanf(\ k=serch(a,b,x); if (k==-1)
printf(\数组中无查找的元素。\\n\
else printf(\您查找的元素是第- 个元素。\\n\}
int serch(v,n,x) int n;
ET v[],x; /*ET为线性表数据类型*/ {
int k=0;
while((k 有序线性表的对分查找算法: #include { int a[N],i; int bsearch(int [],int ,int ); printf(\请输入一个有序序列: \\n\ for(i=0;i scanf(\ printf(\想要查找的元素在数组中的下标是:%d\\n\} int bsearch(int v[],int n,int x) { int i=1,j=n,k=0; while (i<=j) { k=(i+j)/2; if(v[k-1]==x) return(k-1); if(v[k-1]>x) j=k-1; else i=k+1; } return(-1); } 冒泡排序的算法: #include int a[N],i; int bubsort(int [],int ); printf(\请输入需要排序的数组序列: \\n\ for(i=0;i scanf(\ printf(\排序前的数组序列:\\n\ for(i=0;i printf(\ bubsort(a,N); printf(\排序后的数组序列:\\n\ for(i=0;i printf(\} int bubsort(int p[],int n) { int m,k=0,j,i,d; m=n-1; while(k j=m-1; m=0; for(i=k;i<=j;i++) if(p[i]>p[i+1]) { d=p[i]; p[i]=p[i+1]; p[i+1]=d; m=i; } j=k+1; k=0; for(i=m;i>=j;i--) if(p[i-1]>p[i]) { d=p[i]; p[i]=p[i-1]; p[i-1]=d; k=i; } } } 对无序序列P(m:n)进行的快速排序算法: #include int a[N],i,m=1; printf(\请输入需要排序的序列: \\n\ for(i=0;i scanf(\ printf(\排序前的序列:\\n\ for(i=0;i<=N-1;i++) printf(\ qksortl(a,m,N); printf(\排序后的序列:\\n\ for(i=0;i<=N-1;i++) printf(\} int qksortl(int p[],int m,int n) { int i; if(n>m) { i=split(p,m,n)+1; qksortl(p,m,i-1); qksortl(p,i+1,n); } return(1); } static int split(int p[],int m,int n) { int i,j,k,u,t; i=m-1,j=n-1,k=(i+j)/2; if((p[i]>=p[j])&&(p[j]>=p[k])) u=j; else if((p[i]>=p[k])&&(p[k]>=p[j])) u=k; else u=i; t=p[u]; p[u]=p[i]; while(i!=j) { while((i } p[i]=p[j]; i=i+1; while((i p[j]=p[i]; j=j-1; } } } p[i]=t; return(i); 简单插入排序的算法: #include void insort(int [],int ); int num[LEN]; printf(\请输入一组数作为数组元素:\\n\ for(int i=0;i printf(\排序之前的数组序列如下:\\n\ for(i=0;i printf(\ insort(num,LEN); printf(\排序之后的数组序列如下:\\n\ for(i=0;i printf(\} void insort(int array[],int n) { int j,k,temp; for(j=1;j } { } temp=array[j]; k=j-1; while((k>=0)&&(array[k]>temp)) { array[k+1]=array[k]; k--; } array[k+1]=temp;