/**
* 選擇法排序 p(63)
* **/#include
using
namespace std;
void
input
(int
*element,
int n)
void
show
(int
*element,
int n)
void
swap
(int
*p,int
*q)//非遞迴選擇排序函式
//每次迴圈找整個陣列的最小值並依次放入0,1,2.....n-1的位置
void
select
(int
*element,
int n)
}swap
(element+i,element+min_location)
;//上層迴圈執行完之後,min為剩餘陣列的最小值,location為 最小值的位置,然後交換i和j位置上的值 }}
//遞迴選擇排序函式(從上面的非遞迴選擇排序函式改)
void
select
(int
*element,
int n,
int i)
}swap
(element+i,element+min_location)
;select
(element,n,i+1)
;//遞迴呼叫 }}
intmain
(int argc,
char
** ar**)
/**
* 遞迴冒泡法排序演算法 p(65)
**/#include
using
namespace std;
void
input
(int
*element,
int n)
void
show
(int
*element,
int n)
void
swap
(int
*p,int
*q)//非遞迴氣泡排序演算法
void
bubble
(int
* element,
int n)}}
//遞迴氣泡排序演算法
void
bubble
(int
* element,
int n,
int i)
bubble
(element,n,i+1)
;//遞迴呼叫 }}
intmain
(int argc,
char
** ar**)
/**
* 遞迴全排列演算法 p(175)
**/#include
using
namespace std;
void
swap
(int
*p,int
*q)void
show
(int
*element,
int n)
//非遞迴全排列演算法
void
dfs(
int*element,
int n)}}
//遞迴全排列演算法
void
dfs(
int*element,
int n,
int i)
for(
int j=i;jintmain()
;int n=3;
//函式呼叫
dfs(a,n)
;//程式結束
return0;
}
/**
* 遞迴fibonacci數列
**/#include
using
namespace std;
//遞迴求第n項斐波那契數的值
intfibonacci
(int n)
//遞迴求前n項的和或者求前n項的斐波那契數列都可以在上面的演算法裡修改
intmain()
演算法考試專項複習筆記2(貪心和遞迴)
設有n個活動的集合e 所有的活動要求使用同一資源,而在同一時間內只有乙個活動能使用這一資源,每個活動都有使用這一資源的開始時間si和結束時間fi,且si include include using namespace std const int n 1e5 10 typedef struct nod...
演算法 遞迴演算法
遞迴演算法的概念,就是通過不斷地呼叫自身,最終達到解決問題的目的。遞迴有兩個點需要注意 1.要不斷的呼叫自身 2.這個遞迴要有出口,不能成為死迴圈 看下面的例子。很多介紹遞迴演算法的,都會用遞迴來做乙個題目 計算乙個數的階層。例如 計算5的階層,5 5 x 4 x 3 x 2 x 1 用遞迴來實現 ...
遞迴演算法經典例項 演算法 遞迴演算法
遞迴現象 老和尚講故事 自己呼叫自己 兩面鏡子互相映像 兩者相互呼叫 演算法思想 把規模大的問題轉化為規模小的相似的子問題來解決。在函式實現時,因為解決大問題的方法和解決小問題的方法往往是同乙個方法,所以就產生了函式自己呼叫自己的情況。遞迴函式 內部操作直接或間接地呼叫了自己的函式。遞迴函式兩大要素...