黑马程序员技术交流社区

标题: 折半思想 [打印本页]

作者: 赵云18235802528    时间: 2015-7-8 06:29
标题: 折半思想
#include <stdio.h>

void paixu(int arr[],int len){
    //使用循环遍历没有排序前的数组
    for (int i=0; i<len; i++) {
        printf("%d\t",arr);
    }
    printf("\n");
    int temp;//引用第三个数为了让两个数的位置进行交换
    for (int i=0; i<len; i++) {
        for (int j=i+1; j<len; j++) {
            if (arr>arr[j]) {
                temp=arr;
                arr=arr[j];
                arr[j]=temp;
            }
        }
    }
}

void printf_xuanze(int arr[],int len){
    //遍历排序后的数组
    for (int i=0; i<len; i++) {
        printf("%d\t",arr);

    }
    printf("\n");
}
//查找数    len代表数组的长度  x代表所要找的数字
int searchnumber(int arr[],int len,int x){
    //low代表最小的数,high代表最大的数,mid代表两个数的中间数
    int low=0,high=len-1,mid;
    while (low<=high) {
        mid=(low+high)/2;
        if (x<arr[mid]) {
            high=mid-1;
        }else if (x>arr[mid]){
            low=mid+1;
        }else{
            x=mid;
            return mid;
        }

    }
    return -1;
    }



int main(int argc, const char * argv[]) {
    int a[10]={12,97,9,7,1,29,87,297,982,17};
    paixu(a,10);
    printf_xuanze(a, 10);

    int loc=searchnumber(a,10,97);
    printf("%d\n",loc);
    return 0;
}






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2