教案程序代码查找与排序_顺序与排序教案幼儿园
教案程序代码查找与排序由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“顺序与排序教案幼儿园”。
一、查找
1、顺序查找
int search(ET v[], int n , ET x){ int k=0;while(k
2、二分法查找
int bsearch(ET v[] , int n, ET x){ int i, j, k;while(i
3、分块查找
struct indnode { int key;int k;};int insearch(ET v[], struct indnode s[], int n, int m, ET x){ int i, j, t;i=0;j=m-1;while(i
if(x
else if(x>s[t].key)i=t+1;} if(it)j=-1;return(j);}
二、排序
1、双向冒泡
void bubsort(ET p[], int n)
{ int m, k, j, i;ET d;
k=0;m=n-1;
while(k
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;} } }
2、快速排序1 void qksort(ET p[], int m, int n){ int i;if(n>m)
{ i=split(p, m, n);
qksort(p, m, i-1);qksort(p, i+1, n);}
return;} static int split(ET p[], int m , int n){ int I, j, k, u;ET 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=t)j=j-1;if(i
while(i
if(i
3、快速排序2 void quicksort(int p[],int left,int right){
int i, j, t;
i=left;j=right;t=p[i];
while(i
{
}
p[i]=t;
outtable(p);
if(left
if(j
4、直接插入排序
void insort(ET p[], int n)
{ int j, k;ET t;
for(j=1;j
{ t=p[j];
k=j-1;
while(k>=0 && p[k]>t)
{ p[k+1]=p[k];k=k-1;}
p[k+1]=t;} }
5、希尔排序
void shlsort(ET p[], int n){ int h, j, k;ET t;
h=h/2;
while(h>0)
{ for(j=h;j
{ t=p[j];
k=j-h;
while(k>=0 && p[k]>t)
{ p[k+h]=p[k];k=k-h;}
p[k+h]=t;} h=h/2;} }
6、选择排序
void select(ET p[], int n){ int i, j, k;ET d;for(i=0;i
while((it))j--;if(i
p[i]=p[j];i++;
} while((i
} for(j=i+1;j
7、堆排序
void heap(ET p[], int n){ int i, k;ET t;
k=n/2;
for(i=k-1;i>=0;i--)sift(p, n-1, i);
for(i=n-1;i>=1;i--)
{ t=p[0];p[0]=p[i];p[i]=t;
sift(p, i-1, 0);
}
return;}
static sift(ET A[], int n, int m)
{ int j;ET t;
t=h[m];j=2*(m+1)-1;while(j
如有打错的地方请指出。