数据结构毕达哥拉斯三角形数

给出一个高效算法,求出 1,3,6………..n 这串数中大于 M 小于 N 的数。(M和N是给定的数)

使用二分(折半)查找法应该是最快的查找方法之一。

/* Note:Your choice is C IDE */
#include "stdio.h"
void main()
{
    int a[10]={1,2,3,4,5,8,10,110,120,1000};
    int left,right,mid;
    int num,cnt=0;
    printf("请输入你要查找的数据:");
    scanf("%d",&num);
    left = 0;
    right= 9;
    while(left<=right){
    	//计算查找次数
    	cnt++;
    	//获取中间位置元素的下标
    	mid = (left+right)/2;
    	if(num>a[mid]){
    		//往右找
    		left=mid+1;
    	}else if(num<a[mid]){
    		//往左找
    		right=mid-1;
    	}else{
    		//找到了
    		printf("在第%d个位置找到了数据,共查找%d次\n",mid+1,cnt);
    		break;
    	}
    };
    if(left>right){
    	printf("你要查找的数据不存在\n");	
    }
    for(right=mid;right<10;right++){
    	printf("%d\t",a[right]);	
    }
}