二分查找和字符串基本知识总结

来源:互联网 发布:最新mac系统公测版 编辑:程序博客网 时间:2024/06/05 04:50

二分查找法:

二分查找法只适合有序数组

int halfSearch(int array[],int length, int key)

{

     最小值的索引,最大值的索引,中间值的索引

    int min, max, mid;

    min = 0;

    max = length - 1;

    mid = (min + max) / 2;

    while (key != array[mid]) {

        if (key > array[mid]) {

            如果要找的值大于中间值, min要变

            min = mid + 1;

        }else if (key < array[mid])

        {

            如果要找的值小于中间值,max要变

            max = mid - 1;

        }

        

        如果最小值都超过了最大值,就证明没有找到

        if (min > max) {

            return -1;

        }

        每次min或者max变化之后,要重新计算mid的值

         mid = (min + max) / 2;

    }

    循环执行完毕,代表找到了

    return mid;

}


二维数组

元素类型数组名[元素个数];

    元素类型: 说明将来数组中存放元素的类型

    元素个数: 说明将来数组中能存放多少个元素

     

    元素类型 数组名[行数][列数];

    元素类型 数组名[有多少个一维数组][每一个一维数组的元素个数];

    二维数组本质依然是一个一维数组, 只不过他的每一个元素又是一个一维数组而已

int ages[2][3] =

    {

        {1, 3, 5},

        {1, 3, 5}

    };

 二维数组初始化方式

    在定义的同时进行初始化

    int a[2][3] = {{1, 3, 5}, {2, 4, 6}};

    

    也是部分初始化

    int c[2][3] = {{1, 2}, {3}};

    int ages[3] = {1};

    

   二维数组可以省略行数,会自动根据初始化的值计算出有多少个一维数组

    int d[][3] = {1, 3, 5, 2, 4 ,6, 7};   

    注意:二维数组不能省略列数,必须明确的告诉二维数组中每一个一维数组可以存放多少个元素

    int e[2][]= {{1, 3, 5}, {2, 4, 6}};

    

    要给二维数组进行一次性的赋值,只能在定义二维数组的时候

    int f[2][3];

    f[0] = {1, 3, 5};


字符串:

字符串用数组保存,字符串是由字符组成

    char str[] = "jyk";

    printf(str);

    字符串的初始化

    char str[] = "jyk"; // L + N + J + \0

    \0ascii码值是 0

    \0是字符串结束的标志

    char str2[] = {'j', 'y', 'k', '\0'};

    如果数组元素个数大于初始化的字符,没有初始化的元素的值默认是0

    \0ascii码值是 0, 所以也是一个字符串

    char str3[5] = {'j', 'y', 'k'};

    

    注意:这个不是字符串,因为没有\0

    char str4[3] =  {'j', 'y', 'k'};

    静态初始化,会更具后面初始化的元素来确定数组的长度

    char str5[] =  {'j', 'y', 'k'};


    %s用于输出字符串









0 0
原创粉丝点击