我是靠谱客的博主 过时水蜜桃,最近开发中收集的这篇文章主要介绍C语言 选择排序、折半查找法与二维数组,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

19.选择排序

for (int i = 0; i<len-1; i++) {

        for (int j = i+1; j<len; j++) {

            if (a[j]<a[i]) {

                temp = a[i];

                a[i] = a[j];

                a[j] = temp;

            }

            for (int k = 0; k < len; k++) {

                printf("%d ",a[k]);

            }

            printf("n");

        }

        

        printf("n");

    }


20.折半查找法

①基本思路:在有序表中,取中间元素作为比较对象,若给定值与中间元素的要查找的数相等,则查找成功;若给定值小于中间元素的要查找的数,则在中间元素的左半区继续查找; 若给定值大于中间元素的要查找的数,则在中间元素的右半区继续查找。不断重复上诉查找过程,直到查找成功。

#include <stdio.h>


int find(int a[],int num,int len){

    

    int low=0,mid=0,high=0,key=0;

    int flag = 1;

    printf("len is %dn",len);

    low = 0,high = len-1;

    

    while(flag){

        mid = (low+high)/2;

        

        if (a[mid] < num) {

            low = mid;

        }

        if (a[mid] > num) {

            high = mid;

        }

        if (a[mid] == num) {

            key = mid;

            flag = 0;

        }

    }

    return key;

}



int main(int argc, const char * argv[]) {

    

    int a[] = {12,23,34,42,56,63,72,89,94};

    int len = sizeof(a) / sizeof(int);

    int num = 23;

    int key = find(a, num,len);

        

    printf("the key number is %d,key is %dn",num,key);

    

    return 0;

}


21.二维数组

①一个一维数组的每个元素又被声明为一个一维数组,从而构成二维数组,可以说是二维数组是一个特殊的一维数组。

定义: 数组名[第一维的长度(行)] [第二维的长度(列)]; int a[2][3];  int b[1+3][3}  ; #difine M 3 int c[M][M+3]。

③初始化:

    1)完全初始化:

            正常赋值:int a[2][3] = {{1,2,3},{2,3,4}};

            连续赋值:int a[2][3] = {1,2,3,4,5,6};

            可以省略第一维:int a[][3] = {{1,2,3},{4,5,6},{7,8,9}};     //等价于int a[3][3];       

                                     int a[][2] = {1,2,3,4,5,6,7,8};     //等价于int a[4][2]={1,2,3,4,5,6,7,8};
    2)部分初始化

            int a[3][4]= {1};   //a[0][0]被赋值为1,其他全为0;


④存储方式:

    1)计算机会给二维数组分配一块连续的存储空间;

    2)数组名代表数组的首地址,从首地址开始,依次存入第一行、第二行....第n行;

    3)每一行的存储方式,从行首地址开始,依次存储行的第1个元素、第2个元素...第n个元素;

    4)每个元素占用相同的字节数(取决于数组类型);

    5)并且数组中元素之间的地址是连续的

    6)首地址 = 数组名地址 = 第一行的地址 = 第一行第一个元素地址



最后

以上就是过时水蜜桃为你收集整理的C语言 选择排序、折半查找法与二维数组的全部内容,希望文章能够帮你解决C语言 选择排序、折半查找法与二维数组所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部