几种常用的查找和排序算法

几种常用的查找和排序算法

发表于:2008年4月1日 13时53分7秒阅读(1)评论(0) 本文链接:http://user.qzone.qq.com/40348105/blog/1207029187
#include <malloc.h>
#include<stdio.h>
#define N 11
/*用监视哨查找*/
int search(int array[],int n,int k)
{
int i;
i=n-1;
array[0]=k;
while(array[i]!=k) i--;
return(i);
}
/*折半查找法*/
int halfsearch(int array[],int n,int k)
{
int i,j,mid;
i=1;j=n;
while(i<=j)
{
  mid=(i+j)/2;
  if(k==array[mid]) return(mid);
  else if(k<array[mid]) j=mid-1;
  else i=mid+1;
}
return(0);
}
/*冒泡排序法*/
void mpsort(int array[])
{
int i,j,a;
a=0;
for(i=1;i<N;i++)
  for(j=i+1;j<N;j++)
   if(array[i]>array[j])
   {
    a=array[i];
    array[i]=array[j];
    array[j]=a;
   }
}
/*直接插入排序*/
void insertsort(int array[])
{
int i,j;
for(i=2;i<N;i++)
{
  array[0]=array[i];
  j=i-1;
  while(array[0]<array[j])
  {
   array[j+1]=array[j--];
   array[j+1]=array[0];
  }
}
}
/*建立*/
void creat(int array[])
{
int i;
printf("enter the array:/n");
for(i=1;i<N;i++)
  scanf("%d",&array[i]);
}
/*显示*/
void print(int array[])
{
int i;
printf("The numbers after sort is:/n");
for(i=1;i<N;i++)
  printf("%d ",array[i]);
printf("/n");
}

main()
{
int a[11],i,x,chang;
/*printf("enter the array/n");
for(i=1;i<11;i++)
scanf("%d",&a[i]);*/

aga:
printf("/nchang:1: use watching method finding/n 2:use half method finding/n 3: use directness intsert method sort/n 4:use bubble up method sort/n 5:exit/n");
scanf("%d",&chang);
switch (chang)
{
case 1:
  {
   creat(a);
   printf("Please enter the search number:/n");
   scanf("%d",&x);
   printf("The number station is:%d/n",search(a,N,x));
   goto aga;
  }
case 2:
  {
   creat(a);
   insertsort(a);
   print(a);
   printf("Please int the search number:/n");
   scanf("%d",&x);
   printf("The number station is:%d/n",halfsearch(a,N,x));
   goto aga;
  }
case 3:
  {
   creat(a);
   insertsort(a);
   print(a);
   goto aga;
  }
  
case 4:
  {
   creat(a);
   mpsort(a);
   print(a);
   goto aga;
  }
  
case 5:{ printf("exit!/n");break;}
default:{printf("Error!/n"); goto aga;}
}
}
 

猜你喜欢

转载自blog.csdn.net/wflishh/article/details/2293126