码迷,mamicode.com
首页 > 编程语言 > 详细

选择排序&冒泡排序&折半查找

时间:2015-02-07 11:32:50      阅读:209      评论:0      收藏:0      [点我收藏+]

标签:

//选择排序

void test2(int a[],int len){

 

//每次找出一个最小值,最小值依次与原数组交换位置,通过下标来完成交换,最小值下标每次都在变,变量存储

//    假如第一个是最小值

    int mine=0;

    int teamp=0;

//    外层负责趟数

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

        //    假如每一次的第一个是最小值

        mine=i;

//    内层负责寻找每趟的最小值

//        每次起始比较值都不一样所以j=i+1,改变次数

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

//            最小值下标赋给mine

            if (a[mine]>a[j]) {

                mine=j;

            }

//

        }

//        交换   mine!=i表示最小值不是假设的值

        if (mine!=i) {

            teamp=a[i];

            a[i]=a[mine];

            a[mine]=teamp;

 

        }

        

//        每次打印的都是最小值

        printf("%d\t",a[i]);

        

    

 

}

}

//冒泡排序

void test3(int a[],int len){

    int temp=0;

//外层负责趟数

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

//        内层负责每趟交换,起始值j=0不变,len-i-1控制次数

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

//            相邻值进行比较

            if (a[j]>a[j+1]) {

//交换

                temp=a[j+1];

                a[j+1]=a[j];

                a[j]=temp;

            

            }

        }

        printf("%d\t",a[len-i-1]);

    }

    printf("\n");

}

//折半查找,针对有序数组

int  test4(int a[],int len,int key){

//    指向最高,最低,以及中间下标的变量

    int hight=len-1,low=0,mid=0;

    

    

 

//    当low,hight,mid指向同一个时,就可以找到值

    while (low<=hight) {

        mid=(hight+low)/2;

//        在右边

        if (key>a[mid]) {

            low=mid+1;

            //            在左边

        }else if (key<a[mid]){

            hight=mid-1;

}

//        刚好是

            else{

            return mid;

        }

    }

        return -1;

    }

    

 

选择排序&冒泡排序&折半查找

标签:

原文地址:http://www.cnblogs.com/lijianyi/p/4278530.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!