c语言日常杂记2

来源:互联网 发布:全球淘宝占比 编辑:程序博客网 时间:2024/05/16 12:40

1、数组的定义位置的区别

当数组长度为小于100000时可定义在函数内,当数组名再大的时候需要定义在函数外,以方便全部打开

2、二分查找

(1)原理分析(输入数据后先排序再处理)

#include <iostream>
#include <stdio.h>
using namespace std;
int [100000]
int main()
{
    int x,y,l,r,mid;
    scanf("%d %d",&x,&y);//从x个数中找y;
    for(int i=0;i<x;i++)
    scanf("%d",&a[i]);
    sort(a,a+x);//排序;
    l=0,r=x-1;
    while(l<=r)
    {
        mid=(l+r)/2;
        if(mid==y)
        break;
        if(mid>y)
        r=mid-1;
        else
        l=mid+1;
    }
    printf("%d",a[mid]);
    return 0;
}

注意!此问题容易I超时,原因可能是用cin,cout,当输入的数据很大并且组数很多时cin非常耗时,cin所用时间大约是scanf的三倍

(2)调用函数

upper——bound()

找到大于所找数的第一个数

lower-bound()

找到大于等于所找数的第一个数

1 0