码迷,mamicode.com
首页 > 其他好文 > 详细

周记3

时间:2020-06-22 18:37:56      阅读:79      评论:0      收藏:0      [点我收藏+]

标签:代码   lib   长度   查找   amp   osi   就是   else   指定   

数据结构

#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. 待查记录必须有序。

周记3

标签:代码   lib   长度   查找   amp   osi   就是   else   指定   

原文地址:https://www.cnblogs.com/respects/p/13178228.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!