黑马程序员技术交流社区

标题: 冒个泡排排序 [打印本页]

作者: 895928691    时间: 2015-7-26 07:42
标题: 冒个泡排排序
//-----    冒泡:
        外层for (int i=0; i<len-1; i++)
            内层for (int j=0; j<len-i-1; j++)

//-----    选择排序:
        外层for (int i=0; i<len - 1; i++)
            内层for (int j=i+1; j<len; j++
//------------------折半查找思想

思路:   先划分空间,再在其空间查找,取中间点,中间点往左,元素的值一定比中间值小,右边的值一定比中间值大.
    判断关键点  if (key>arr[mid]) {low = mid+1;}    //右半区查找
               if (key<arr[mid]){high = mid - 1;}  //左半区查找
找12
   low                                  high
    0   1    2   3  4    5  6   7   8    9
//  3412202123284567100
--------------------------------------------
1  low             mid                   high
2  low mid      high
3           low high

mid = (low + high) / 2  = 4;

a[4] = 21 > 12  -->  high = mid - 1  --->  4 - 1 = 3
mid = (low + high)/2 = 1;

a[1] = 4 < 12  -->   low = mid + 1 -->  1+1 = 2
mid = (2+3)/2 --> 2

a[2] = 12 == 12

//折半查找



作者: 895928691    时间: 2015-7-26 07:43

//折半查找
int searchItem(int arr[],int len,int key){
   
    //先要定义变量
    int low=0,high=len-1,mid;
   
    //循环
    while (low<=high) {
        
        // 计算 mid的位置
        mid = (low+high)/2;
        
        printf("mid = %d",mid);
        
        // 判断 key a[mid],右半区查找
        if (key>arr[mid]) {
            // key > a[mid]     low = mid +1;
            low = mid+1;
        }elseif (key<arr[mid]){
            // key < a[mid]     high = mid -1;
            high = mid - 1;
        }else{
            // key == a[mid]    //return mid;
            return mid;
        }
    }
   
    // 下面是查找不到的情况
    return -1;
}

//折半插入  不建议看
int insertItemLoc(int arr[],int len,int key){
   
    //先要定义变量
    int low=0,high=len-1,mid;
   
    //循环
    while (low<=high) {
        
        // 计算 mid的位置
        mid = (low+high)/2;
        
        // 判断 key a[mid],右半区查找
        if (key>arr[mid]) {
            // key > a[mid]     low = mid +1;
            low = mid+1;
        }elseif (key<arr[mid]){
            // key < a[mid]     high = mid -1;
            high = mid - 1;
        }else{
            // key == a[mid]    //return mid;
            return mid + 1;
        }
    }
   
    // 下面是查找不到的情况
    return low;
}


作者: 我丶就这样    时间: 2015-7-26 09:33
围观学习!
作者: LSwbfil2015    时间: 2015-7-26 10:00
围观学习
作者: 408205555    时间: 2015-7-26 13:23
围观学习。




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