⑴ 如何用遞歸演算法,實現對有序表的順序搜索的功能 《C++》
【1】隨機生成一組數,用快速排序實現數組排序後,用您所想要的遞歸演算法(二分思想)進行搜索,可否看得出快速排序與與該演算法的有某處相同?
【2】好好研究快速排序演算法,無論對遞歸的運用還是提高分析能力都有很大的受益。
#include "time.h"
#define MAX 20
void Initial(int a[]);
void QuickSort(int a[],int left, int right);
void Print(int a[]);
int Search(int a[],int x,int start, int end);
int main()
{
int a[MAX]={0};
Initial(a);
Print(a);
QuickSort(a,0,MAX-1);
printf("###After quick sort:###");
Print(a);
if (Search(a,10,0,MAX-1))
{
printf("\nfind");
}
else
{
printf("\nnot find");
}
return 0;
}
void Initial(int a[])
{
int i=0;
srand( (unsigned)time(NULL));
for (i=0; i<MAX; i++)
{
a[i] = rand()%MAX;
}
}
void QuickSort(int a[],int l, int r)
{
int left=l,right=r;
if (left>=right)
{
return ;
}
int temp = a[left];
while (left<right)
{
//從右邊開始找一個小於temp的數,找到或left>=right為止
while (a[right]>=temp && left<right)
{
right--;
}
if (left<right)
{
a[left]=a[right];
left++;
}
//從左邊開始找一個大於temp的數,找到或left>=right為止
while(a[left]<=temp && left<right)
{
left++;
}
if (left<right)
{
a[right]=a[left];
right--;
}
}
a[left] = temp;
QuickSort(a,l,left-1);
QuickSort(a,left+1,r);
}
void Print(int a[])
{
int i=0;
for (i=0; i<MAX; i++)
{
printf("%d ",a[i]);
}
printf("\n");
}
//這是你所需要的遞歸演算法,對有序表搜索。
int Search(int a[],int x,int start, int end)
{
if (start>end)
{
return 0;
}
int mid=(start+end)/2;
if (x == a[mid])
{
return 1;
}
if (x>a[mid])
{
Search(a,x,mid+1,end);
}
else if (x<a[mid])
{
Search(a,x,start,mid-1);
}
}
⑵ 遞歸程序和遞歸、遞歸演算法一樣嗎
程序調用自身的編程技巧稱為遞歸( recursion)。遞歸做為一種演算法在程序設計語言中廣泛應用。所以,從一定意義上說,人們平時所說的遞歸就是遞歸演算法。遞歸程序是將遞歸演算法用程序設計語言來實現的,它是程序,當然也有人說程序是演算法描述的一種方法,不管怎麼說,遞歸程序不等同於遞歸演算法。
⑶ 如何用遞歸演算法,實現對有序表的順序搜索的功能《C++》
這個問題我知道!順序搜索要用遞歸么???·····對有序表的話用二分就行了········
遞歸的話適用於數列····
a(n)=a(n-1)+a(n-2)
這種,數列元素直接有一定聯系的才行·····,有序表···用遞歸的話···我唯一能想到的就是
intf(intn,inti){
inta;
if(a[i]==n)
returni;
else{
a=f(n,i+1);
returna;
}
}
main(){
~
f(n,0)
~
}
大概就這樣了··從0號元素搜索···不是就下一號········,其他的我就想不出如何用遞歸搜索有序表了·······
⑷ 遞歸順序檢索
沒看出啥問題,應該是對的
如下所示:
function
my_scandir($dir)
{
$files=array();
if(is_dir($dir))
{
if($handle=opendir($dir))
{
while(($file=readdir($handle))!==false)
{
if($file!="."
&&
$file!="..")
{
if(is_dir($dir."/".$file))
{
$files[$file]=my_scandir($dir."/".$file);
}
else
{
$files[]=$dir."/".$file;
}
}
}
closedir($handle);
return
$files;
}
}
}
以上就是小編為大家帶來的php獲得文件夾下所有文件的遞歸演算法的簡單實例全部內容了,希望大家多多支持腳本之家~
⑹ 什麼是遞歸演算法,演算法學習哪個網站好呢
遞歸演算法指的是函數/過程/子程序在運行過程中直接或間接調用自身而產生的重入現象。看過馬克威演算法交易平台,裡面涵蓋開源的演算法以及馬克威演算法,另外還有機器學習等內容,真心好,我還下載了幾個演算法研究了下.....頗合我意~希望可以幫到你。
⑺ 遞歸演算法中樹的遍歷和圖的搜索是怎麼一回事啊
訪問樹或圖中的每一個結點,每一結點都要訪問到而且僅能訪問一次
⑻ 使用遞歸演算法 查找是否有.txt的文件 畫出還演算法的流程圖
遞歸演算法畫流程圖沒有意義,演算法代碼我有,你要不要。
⑼ 棧和遞歸演算法
我感覺這道題目出得有問題:
假設這道題目用遞歸來實現,當用戶輸入的x、y滿足x=0 && y>=0或者x>0 && y=0就無法作為遞歸結束的條件。因此,這個函數有問題。如果函數改為:
g(x,y)=0 x=0,y>=0
g(x,y)=g(x-1,2y)+y x>0,y>0
倒是可以實現。
我以我改過的函數寫一個示例,掌握了方法才是王道。
如果我的理解有誤,你可以HI我,接著探討。
⑽ 用遞歸演算法取得一個文件夾的路徑有點效率低,有沒有效率高一點的
Python walk()一下試試。。。