c语言——在一个有序数(无序)组查找具体某个数字n

c语言——在一个有序数(无序)组查找具体某个数字n,第1张

问题1:在一个有序数组查找具体某个数字n
思路1:计算出数组的总个数,再根据输入数字的编号查找 代码输入:
#include "stdio.h"
int main(){
    int arr[]={1,2,3,4,5,6,7,8,9,10};
    int k,i;
    //写一个代码,在arr数组中找到k
    scanf("%d",&k);
    int sz=sizeof (arr)/sizeof (arr[0]);
    //计算出数组的总个数
    for (i = 0; i 
 思路2:利用二分法查找数组 代码输入:​​​​​​​
#include"stdio.h"
int main(){
    int arr[]={1,2,3,4,5,6,7,8,9,10};
    int x;
    scanf("%d",&x);
    int sz= sizeof(arr)/sizeof(arr[0]);     //计算元素个数
    int left=0;     //左下标
    int right=sz-1;     //右下标
    while(left<=right)
    {
        int mid=(left+right)/2;
        if (arr[mid] > x)
        {
            right = mid - 1;
        }
        else if (arr[mid] < x)
        {
            left = mid + 1;
        }
        else
        {
            printf("找到了,下标是%d\n", mid);
            break;
        }
    }
    if(left>right)
    {
        printf("找不到\n");
    }

    return 0;
}

问题2:在一个无序数组查找具体某个数字n
思路:简单来说就是在数组中一个一个地查找 代码输入:
#include
int main()            //简单来说就是一个一个的找
{
    int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
    int x;
    int i;
    int sz = sizeof(arr)/sizeof(arr[0]);  //计算数组中的个数
    scanf("%d",&x);
    for ( i = 0; i < sz; i++)
    {
        if(x==arr[i])
        {
            printf("找到了,下标为:%d\n",i);
            break;
        }
    }
    if (i == sz)
    {
        printf("找不到\n");
    }
    return 0;
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/674561.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-19
下一篇 2022-04-19

发表评论

登录后才能评论

评论列表(0条)