僅供參考:
#include
#include
#include
#include
//陣列
#include
//集合
#include
//對映
#include
//包含map中的make_pair()函式
#include
//包含sort排序
#include
using namespace std;
stack<
int> s[3]
;void
move
(int a,
int b)
void
han(
int a,
int b,
int c,
int n)
han(a,c,b,n-1)
;move
(a,c)
;han
(b,a,c,n-1)
;}typedef
long
long ll;
ll f
(int n)
//n的階乘
return n*
f(n-1)
;}intfib
(int n)
//斐波那契數列//1,1,2,3,5,8
struct student
;int
main()
for(i=
0;i) cout<} vector<
int>
temp
(n);
//兩種初始化 第二個引數預設為零
vector<
int>
temp2
(n,5);
vector class1;
//存放結構體
student stu1,stu2;
stu1.name=
"jsdokl"
; stu1.age=45;
stu2.name=
"sjdf"
; stu2.age=34;
class1.
push_back
(stu1)
; class1.
push_back
(stu1)
; vector<
int> vec;
vec.
push_back(3
);//尾部插入
vec.
push_back(5
);vec.
push_back(1
);vec[0]
=4;//可直接手改
vec.
pop_back()
;//尾部刪除
for(i=
0;isize()
;i++
)//取長度
vectorint>
> dd;
for(i=
0;i<
9;i++
)for
(i=0
;i<
9;i++
)//九九乘法表
}for
(i=0
;isize()
;i++
) cout<} class1.
clear()
;//清空資料,記憶體還在
/*******************set********************/
set name;
name.
insert
("dshfl");
//插入
name.
insert
("dklv");
name.
insert
("sovj");
name.
erase
("sovj");
//刪除
if(name.
count
("dklv"))
//查詢 返回1,0
for(set
::iterator it=name.
begin()
;it!=name.
end(
);it++
) name.
clear()
;//清空set記憶體
cout
/獲取元素個數
/*******************map***********************/
mapint> s;
s.insert
(make_pair
("niuge",3
));//第一種插入
s["chenl"]=
1;//第二種插入
s["dsjfkl"]=
2;s["sldkjf"]=
2;if(s.
count
("chenl"))
//查詢
for(mapint>
::iterator it=s.
begin()
;it!=s.
end(
);it++
) s.
clear()
;/*******************sort排序***********************/
int i;
int arr=
;sort
(arr,arr+10)
;//小到大
for(i=
0;i<
10;i++
) cout
(arr,arr+
10,greater<
int>()
);//大到小
for(i=
0;i<
10;i++
) cout*******************棧***********************/
stack name;
name.
push
("slkf");
//壓入棧底
name.
push
("jlksdf");
name.
push
("skfdj");
name.
push
("s");
name.
push
("sdjl");
while
(!name.
empty()
)//判斷是否為空 bool型別
cout
;/*******************遞迴***********************/
//遞迴問題解決重複子問題
//ll a=4038509223897348975;
//cout//printf("%lld\n",a);
//coutint n;
cin>>n;
for(
int i=n;i>=
1;i--
)han(0
,1,2
,n);
while
(!s[2]
.empty()
)return0;
}
去除尾遞迴的快速排序以及快速排序的棧深度
對於棧深度的定義 編譯器通常使用棧來儲存遞迴執行過程中的相關資訊,包括每次遞迴呼叫的引數等。最新呼叫的資訊存在棧的頂部,而第一次呼叫的資訊存在棧的底部。當乙個過程被呼叫時,其相關資訊被壓如棧中,當它結束時,其資訊被彈出。棧深度是在一次計算中會用到的棧空間的最大值。對於快速排序,假設陣列引數的傳遞是用...
快速排序c語言遞迴和棧實現
用到乙個方法,交換兩個數的值 void swap int a,int b 遞迴實現 void quicksortbyrecursion int p,int length 傳遞陣列指標跟陣列長度 swap p,right 把第乙個值跟righ對應的值交換,此時right指向小於中間值的最後乙個數 qu...
遞迴和棧溢位。
遞迴確實是很多演算法的基礎思想。但外部因素導致遞迴會棧溢位。但卻是不甘心如此簡練的有效的演算法,放棄不用。所以一般有2中方式來使用大資料的遞迴思路 1 用棧型別放入引數,模擬遞迴呼叫。2 把大資料分割為一批適中的資料,就可以直接使用遞迴函式。用快速排序,測試並總結了下。1 本例大概 排序30000個...