gpt4 book ai didi

c - 分而治之——返回一个数组

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:56:03 25 4
gpt4 key购买 nike

我最近正在研究分而治之算法。

如果返回值假定为某个单个整数,我能够解决这些问题。

例:1。二分查找,这里只要找到就返回1,否则返回-1。

例:2。数组中的最大数,只需要返回一个数。

但是当涉及到返回一个数组时,比如当我们需要整个数组作为输出时(例如:排序)。

我觉得很难。

谁能提供最佳方法?

以下是我的二分搜索方法。

#include<stdio.h>
char* Divide(int arr[],int l,int r,int key)
{
int m=(l+r)/2;
if(l==r)
{
if(key==arr[m])
return "Found";
else
return "Not Found";
}
else
{
if(key==arr[m])
return "Found";
else if(key>arr[m])
Divide(arr,m+1,r,key);
else
Divide(arr,l,m,key);
}
}
int main()
{
int arr[]={1,2,3,4,5,6,7,8};
int n=sizeof(arr)/sizeof(arr[0]);
char* result=Divide(arr,0,n-1,10);
printf("%s\n",result);
return 0;
}

最佳答案

您必须在递归调用 try 中返回值

#include<stdio.h>
char* Divide(int arr[],int l,int r,int key)
{
int m=(l+r)/2;
if(l==r)
{
if(key==arr[m])
return "Found";
else
return "Not Found";
}
else
{
if(key==arr[m])
return "Found";
else if(key>arr[m])
return Divide(arr,m+1,r,key); // just returning values here
else
return Divide(arr,l,m,key); // and here would make it work
}
}
int main()
{
int arr[]={1,2,3,4,5,6,7,8};
int n=sizeof(arr)/sizeof(arr[0]);
char* result=Divide(arr,0,n-1,10);
printf("%s\n",result);
return 0;
}

online compiler 查看演示

关于c - 分而治之——返回一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45751795/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com