折半查找、选择排序在一位数组中的应用

#include<stdio.h>
#define N 10
int main(void)
{
  void select_sort(int *a);
  void arry_print(int *a);
  void search(int *a,int n);

  int i,number;
  int a[N];
  printf("Enter matrix:\n");
  for(i=0;i<N;i++)
    scanf("%d",&a[i]);
  printf("Before sort:\n");
    arry_print(a);
  printf("After sort:\n");
    select_sort(a);
  arry_print(a);
  printf("Enter the number you look for:\n");
    scanf("%d",&number);
  search(a,number);
  return 0;
}
void select_sort(int *a)
{
  int i,j,min,t;
  for(i=0;i<N-1;i++)
  {
    min=i;
    for(j=i+1;j<N;j++)
      if(a[min]>a[j])
        min=j;
    if(min!=i)
    {  

      t=a[i];

      a[i]=a[min];

      a[min]=t;

    }
  }
}
void arry_print(int *a)
{
  for(int i=0;i<N;i++)
  printf("%d\t",a[i]);
}
void search(int *a,int n)
{
  int top=0,bott=N-1,mid;
  int i,j,k,loca,flag=0;
  if(n<a[0]||n>a[N-1])
    printf("Cannot find %d.\n",n);
  while((!flag)&&(top<=bott))
  {
    mid=(top+bott)/2;
    if(n==a[mid])
    {
      loca=mid;
      printf("Has found %d,it positon is %d .\n",n,loca+1);
      flag=1;
    }
    else if(n<a[mid])
      bott=mid-1;
    else
      top=mid+1;
  }
}

猜你喜欢

转载自www.cnblogs.com/sinlearn/p/10539678.html