基于有序数组的二分查找
来源:互联网 发布:天梭手表怎么样 知乎 编辑:程序博客网 时间:2024/04/26 07:04
#define MAX_COUNT 100//基于有序数组的二分查找int keys[MAX_COUNT] = {0};int values[MAX_COUNT] = {0};int count = 0;int isEmpty(){ return count == 0;}//根据给定的关键字,在字典中查找是否有匹配项,并返回匹配的项的//数组索引,如果没有找到匹配的项,则返回大于该关键字的项的索引,//主要用于将新值插入到合适位置使用.//比如当前关键字集为 3 7 9,当我要插入一个key为8,此时使用rank(key)//应该返回2,则当前新的key值插入到数组索引2的位置.int rank(int key){ int lo = 0; int hi = count - 1; while ( lo <= hi ) { int mid = lo + (hi - lo) / 2; if ( key < keys[mid] ) { hi = mid - 1; } else if ( key > keys[mid] ) { lo = mid + 1; } else { return mid; } } return lo;}//获取匹配key的字典项值,如果没有匹配项,则返回-1int get(int key){ int i = 0; if ( isEmpty() ) { return -1; } i = rank(key); if ( i < count && keys[i] == key ) { return values[i]; } return -1;}//向字典插入新项,如果当前key值在字典中已经存在,则替换//最新的字典项值,如果不存在,则将新项按序插入到合适的位置void put(int key, int val){ int j = 0; int i = rank(key); if ( i < count && keys[i] == key ) { values[i] = val; return; } for ( j = count; j > i; j-- ) { keys[j] = keys[j - 1]; values[j] = values[j - 1]; } keys[i] = key; values[i] = val; count++;}int main(int argc, char *argv[]){ int i = 0; int findKey = 0; int getVal = 0; int keys[] = {2, 4, 6, 1, 9, 4, 9, 8, 7, 2}; int vals[] = {21, 41, 61, 11, 91, 42, 92, 81, 71, 22}; if ( argc != 2 ) { printf("Usage: %s <findKey>\r\n", argv[0]); return 0; } for ( i = 0; i < sizeof(keys)/sizeof(keys[0]); i++) { put(keys[i], vals[i]); } findKey = atoi(argv[1]); getVal = get(findKey); printf("key %d, val %d\r\n", findKey, getVal); return 0;}
0 0
- 基于有序数组的二分查找
- 有序数组的二分查找
- 有序数组的二分查找
- 有序数组的二分查找
- 二分查找(基于有序数组)
- 二分查找 基于有序数组 返回下标
- 有序数组\二分查找
- 有序数组二分查找
- 有序 循环数组的二分查找
- 旋转有序数组的二分查找
- 有序数组的二分查找程序
- 9.5-字符串有序数组的二分查找
- 对于有序数组的二分查找算法
- 旋转有序数组的二分查找
- 旋转有序数组的二分查找
- 二分数组的扩展:二分查找循环有序数组
- 实现有序列表(基于数组,二分查找)
- 算法3.2 二分查找(基于有序数组)(algs4)
- 想起了老朋友
- UIKit 视图 UIView
- Mat类
- 10003---SpringMVC 使用@RequestMapping映射请求
- android 跳转
- 基于有序数组的二分查找
- Android - Volley的ImageLoader下载图片
- 消息队列再整理
- ibooks打开含iframe的epub乱码
- android 即时通讯开发总结
- 241-Different Ways to Add Parentheses
- Android 旋转动画
- 消息队列再整理二
- Mybatis学习笔记-mybatis对时间的处理