A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 408205555 于 2015-7-21 19:45 编辑

//选择排序,从小到大排列。
void main(char argc.const char * argv[]){
        int number[6]={2,1,3,7,4,9};                                  //定义数组
        int temp=0;                                                           //相当于数字交换中转站
        int length=sizeof(number)/sizeof(int);               //计算数组的长度
        for(int i=0;i<length-1;i++){                                 //循环遍历数组,每循环一次,确定一个最小的数,下次参与循环的数字就会减一个
                for(int j=i+1;j<length;j++){                         //让前一个数与后一个数做比较
                        if(number>number[j]){                    //如果前一个数>后一个数
                                temp=number;                         //把前一个数赋值给temp,这三段代码是让前后两个数字交换位置
                                number=number[j];                     
                                number[j]=temp;
                        }
                }
        }
}


//折半选择
//如果key大于中间值,则让最小值=中间值+1
//如果key小于中间值,则让最大值=中间值-1
//如果最小值大于最大值,则证明要找的数不存在
void main(char argc.const char * argv[]){
        int number[]={3,4,12,20,21,23,28,45,67,100};
        //查找20
        int low=0;
        int high=sizeof(number)/sizeof(int)-1;
        int mid=0;
        //要查找的数
        int key=20;

        while(min<=max){
                mid=(low+high)/2;
                if(key>number[mid]){
                        low=mid+1;                        
                }else if(key<number[mid]){
                        high=mid-1;
                }else{
                        printf("找到了");
                }
        }
        printf("没找到");
        
}

1 个回复

倒序浏览
值得学习ing!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马