排序并查找(程序)

来源:互联网 发布:windows x86什么意思 编辑:程序博客网 时间:2024/05/20 06:10
 
/*
File: 实验6的程序
Description:用冒泡排序的方法对用户输入的任意的一个整型数组进行排序;排序后,用户
任意地输入的一个数,用二分查找法查找用户输入的数字,并给出该数在序列中的位置。
Programmer: luye
Date: 21/11/2007
*/
#include<stdio.h>
#define TRUE 1    /*符号常量的使用*/
#define FALSE 0
#define MAXNUMB 10000
/*对用户输入的任意数组进行排序*/
void paixu (int *a,int maxnumb)    /*函数paishu的首行部*/
{
    int m,n,middvari;
    for(m=0;m<maxnumb-1;m++)     /*用循环语句交换两个数的位置*/
        for(n=0;n<(maxnumb-1-m);n++)
            if(*(a+n)>*(a+n+1))
            {
                middvari=*(a+n);
                *(a+n)=*(a+n+1);
                *(a+n+1)=middvari;
            }
}
/*用二分查找法查找用户要查找的数,并返回该数在序列中的位置*/
int zhaoshu(int b[],int key,int maxnumb)   /*函数的首行部*/
{
    int found,index,left,right,middnumb;
    found=FALSE;    /*设置found为false*/
    index=-1;     /*设置索引值为-1*/
    for(left=0,right=maxnumb-1; left<=right&&!found;  )
    {
        middnumb=(int)((left+right)/2);    /*找出中间的数值middnumb*/
        if(key==b[middnumb])     /*把要查找的数和中间的数值middnumb进行比较*/
        {
            found=TRUE;
            index=middnumb;
        }
        else if(key<b[middnumb])
        right=middnumb-1;
        else
        left=middnumb+1;
    }
    return(index);    /*返回该数在序列中的位置*/
}

void main()
{
    int i,j,numb[MAXNUMB];    /*定义一个数组和循环控制变量*/
    int maxnumb,key,location;
    printf("Please type in a number:");
    for(i=0;scanf("%d",&numb[i])!=EOF;i++)   /*输入随意的几个数*/
    {
        maxnumb=i+1;    /*变量maxnumb为用户输入的数组的元素个数*/
        printf("Please type in a number:");
    }
       
    paixu(numb,maxnumb);   /*函数paixu再这里被调用*/
    for(j=0;j<maxnumb;j++)    /*输出排序后的有序数组*/
       printf("%d\n",numb[j]);
      
    printf("Please enter the number you want to find:");   /*输入用户要查找的数key*/
    scanf("%d",&key);
    location=zhaoshu(numb,key,maxnumb); /*函数zhaoshu再这里被调用,并把返回的数值存储在location里面*/
   
    if(location>-1)   /*对返回的该数在有序的数组里的位置进行判断*/
       printf("The number you are founding is located in %d .\n",location);
    else
       printf("The number you are founding is not founded!\n");
}
原创粉丝点击