zoukankan      html  css  js  c++  java
  • 【c语言】折半查找

       折半查找
       编程思路:折半排序 就是将一个有序的数组,输入一个数,找这个数所对应的下标位置、
    折半听上去就是说一半一半,对。就是这个样子,折半就是将元素的最小下标赋值给一个low 最大下标赋值给high
    在定义一个mid变量,mid变量用来定义中间指向的位置。
    第一次判断的时候,先去判断这个m是否小于a[mid]这个元素,小于的话说明 这个范围就在0-mid之间 将高下标
    赋值mid-1 一次判断下面的。如果是大于的m>a[mid] 说明这个范围是在mid-a[higt]之间 将小下标low = mid+1 
    这样就可以找到对应的数的下标。

    #include<stdio.h>
    #define N 10
    /*
    折半查找:
    编程思路:折半排序 就是将一个有序的数组,输入一个数,找这个数所对应的下标位置、
    折半听上去就是说一半一半,对。就是这个样子,折半就是将元素的最小下标赋值给一个low 最大下标赋值给high
    在定义一个mid变量,mid变量用来定义中间指向的位置。
    第一次判断的时候,先去判断这个m是否小于a[mid]这个元素,小于的话说明 这个范围就在0-mid之间 将高下标
    赋值mid-1 一次判断下面的。如果是大于的m>a[mid] 说明这个范围是在mid-a[higt]之间 将小下标low = mid+1 
    这样就可以找到对应的数的下标。
    **/
    void main(){
    	
    	
    	void print(int a[],int n);
    	int a [N] = {1,2,3,4,5,6,7,8,9,10};
    	print(a,N);
    	int m = 0,low = 0,high = N-1,mid = 0,k = -1;
    	printf("输入查找的元素:");
    	scanf("%d",&m);
    
     	while(low<=high){
    		mid = (low+high/2);
    		if(m<a[mid])
    			high = mid-1;
    		else
    			if(m>a[mid])
    				low = mid+1;
    			else{
    			   k = mid;
    			   break;
    			}
    	
    	}
    	printf("元素下标为%d
    ",k);
    }
    
    void print(int a[],int n){
    	for(int i=0;i<n;i++){
    		if(i%5==0)
    			printf("
    ");
    		printf("%d	",a[i]);
    	}
    }
  • 相关阅读:
    自动化基础知识
    第一章Google软件测试介绍
    《将博客搬至CSDN》
    二叉树的先序遍历和中序遍历分析(递归)
    java 部分快捷功能
    toString
    自增自减运算符剖析
    二进制数的直接表示
    编程中的&&和||
    npm 镜像地址设置
  • 原文地址:https://www.cnblogs.com/qxlxi/p/12860861.html
Copyright © 2011-2022 走看看