黑马程序员技术交流社区
标题: 冒个泡排排序 [打印本页]
作者: 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 |