2018-05-20有序表和哈希表的查找

        #include<stdio.h>  
        #include<stdlib.h>  
        
        void Sort(int ST[],int len)  
        {   
          int i,j,index,min,temp;  
            
          for(i=0;i<len;i++)  
          {   
            min = ST[i];  
            for(j=i;j<len;j++)  
                if(ST[j]<min)  
                {   
                    min = ST[j];  
                    index = j;  
                }  
            temp = ST[i];  
            ST[i] = ST[index];  
            ST[index] = temp;  
          }  
        }  
        
        int Search_Seq(int ST[],int key,int n)  
        {  
         int i=0;  
         while( ST[i]!=key && i<n)  
             i++;  
             return i;  
         return -1;  
        } 
         
        int Search_Bin(int ST[],int key,int len)  
        {  
           int low = 0;  
           int high = len -1;  
           int mid;  
          
           while(low<=high)  
           {  
             mid = (low+high)/2;  
             if( key < ST[mid] )    
                 high = mid - 1;   
             else if( key > ST[mid] )    
                 low = mid + 1;  
             else  
                 return mid;  
           }  
           return -1;  
        }  
          
        int main()  
        {   int n = 8;  
            int ST[8] = {100,200,300,99,66,1,50,48};  
            int key;  
            int result;  
            printf("顺序查找\n");
            printf("输入要查找的关键字:\n");  
            scanf("%d",&key);  
            result = Search_Seq(ST,key,n);  
            if( result!=-1)  
                printf("顺序查找成功,是第%d个。\n",result);  
            else  
                printf("查找失败\n");
            
            printf("对顺序表进行排序:\n");  
            
            Sort(ST,n);
            int k;  
            for( k=0;k<n;k++)
            printf("%d\n",ST[k]);  
            printf("折半查找\n");
            printf("折半查找,输入要查找的关键字:\n");  
            scanf("%d",&key);  
            result = Search_Bin(ST,key,n);  
            
            if(result!=-1)  
                printf("折半查找成功,是第%d个。\n",result);  
            else  
                printf("查找失败\n");  
            system("pause");  
            return 0;  
        }  

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容