周记3

数据结构

#include <stdio.h>
#include <stdlib.h> int search(int arr[],int len,int key) { int mid,low = 1; int high = len; //printf("%d!",high); while(low <= high) { mid = (low+high)/2; //printf("%d ",mid); if(key == arr[mid]) { return mid+1; break; } else if(key>arr[mid]) low = mid+1; else high = mid-1; } return 0; } int BSR(int arr[],int key,int low ,int high) { if (low > high) return 0; int mid = low + (high - low)/2; if (arr[mid] == key) return mid+1; else if (key < arr[mid]) return BSR(arr,key,low,mid-1); else return BSR(arr,key,mid+1,high); } int main() { int key; int position1,position2; int arr[] = {3,5,7,11,13,15}; printf("请输入要查找的数:"); scanf("%d",&key); //printf("\n(如果这个数存在我将会返回它所对应的位置,否则返回0)"); printf("------------------------------------------------\n"); /* //数组查找 position1 = search(arr,sizeof(arr)/sizeof(arr[0]),key); if (position2 == 0) printf("这个不存在数组中!(0)"); else printf("这个数在数组中的位置是:%d",position2); */ //递归查找 position2 = BSR(arr,key,0,sizeof(arr)/sizeof(arr[0])); if (position2 == 0) printf("这个不存在数组中!(0)"); else printf("这个数在数组中的位置是:%d",position2); //printf("%d",sizeof(arr)/sizeof(arr[0])); //用sizeof求一个数组的长度,但是arr是一个整形每个元素占 //4个字节,所以求数组长度的时候要除4,就是除一个字节大小 return 0; } 

数据结构题目

以上代码题目分别是:
实现折半查找函数,查找指定元素,若元素在列表中存在,则返回序号,若不存在,则返回0,例如,已知序列“3,5,7,11,13,15”,若查找元素7,则返回3,若查找元素9,则返回0,其它具体要求如下:
1. 待查记录为整数序列;
2. 待查记录从数组下标1处开始存储;
3. 待查记录必须有序。

猜你喜欢

转载自www.cnblogs.com/respects/p/13178228.html
3-3
今日推荐