二分查找
来源:互联网 发布:淘宝如何获得淘金币 编辑:程序博客网 时间:2024/06/05 01:01
编译平台:
VC++6.0
描述:
二分查找前数组必须都有序的!
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <time.h>void rand_num ( int array[],int len){ int i; srand(time(NULL)); for(i=0; i<len; i++) { array[i] = rand()%100+1; } }void bubble( int arr[],int len ){ int i; int j; int num = 0; int tmp; printf("%d\n",len); for( i=1; i<len; i++) for( j=len-1; j>=i; j--) { if( arr[j] < arr[j-1]){ tmp = arr[j]; arr[j] = arr[j-1]; arr[j-1] = tmp; } }}int half_seek( int arr[],int len, int key ){ int i=0; int j = len-1; int flag = 1; int mid; if( flag == 1 ){ if( key == arr[i] ){ printf("%d is found in array[%d]\n",arr[i],i); return 0; } else if( key == arr[j]){ printf("%d is found in array[%d]\n",arr[j],j); return 0; } } flag = 0; while( i < j ){ mid = (i+j)/2; if( key > arr[mid]) i = mid + 1; else if( key < arr[mid]) j = mid -1; else if( key == arr[mid]){ printf("%d is found in array[%d]\n",arr[mid],mid); return 0; } } printf("not found\n"); return -1;}int main(int argc, char *argv[]){ int i=0; int key; int array[20] = {0}; int len = sizeof(array)/sizeof(array[0]); rand_num( array ,len); bubble( array,len); for( i=0; i<len;i++){ printf("%3d%c",array[i],(i+1)%5==0?'\n':' '); } printf("input a num\n"); scanf("%d" ,&key); half_seek( array,len,key); return 0;}遇到的问题:1 在排序的时候for( i=1; i<len; i++) for( j=len-1; j>=i; j--) 把for( i=1; i<len; i++)写成for( i=0; i<len; i++)就存在问题 仔细分析 1是最好的!2 在定义变量的时候必须要放在程序的最开始 不然就提示没有定义这个变量这是是因为VC++6.0 只支持C89标准 这个标准这么规定的!
1 0
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- centos6.5升级linux内核
- Material Design:利用RecyclerView CardView实现新闻卡片样式
- TODO_android
- ios上 更改 状态栏(UIStatusBar)的颜色
- Another Minimum Spanning Tree - UVaLive 3662 曼哈顿最小生成树
- 二分查找
- Leetcode[70]-Climbing Stairs
- Java之RMI(远程方法调用)
- js 调用 DOM js练习入门
- SCARA——OpenGL入门学习五六(三维变换、动画)
- Java线程
- leetcode--BinaryTreePreorderTraversal
- 对android默认存储路径中文件的读写
- 翻转倒过来的字符串