锘??xml version="1.0" encoding="utf-8" standalone="yes"?> //8queen.cpp #include <iostream> const int N = 8; int a[N][N] = {0};
//杈撳嚭鐭╅樀 int main() //鎺㈢儲錛岄亶鍘?鏍稿績閮ㄥ垎) //鍒ゆ柇姝ラ鏄惁鏈夋晥 //杈撳嚭鐭╅樀 cout << "--------------------" <<endl; 鐢ㄨ繖涓▼搴忕敤鎴峰氨鍙互鑷杈撳叆鎯寵鐨勬潹杈変笁瑙掑艦鐨勮鏁頒簡銆?
//YHTriangle.cpp //杈撳嚭n涓┖鏍?/font> int main() CycQueue<int> YHTri(n+2);
YHTri.push(1); //杈撳嚭寰幆闃熷垪涓暀瀛樼殑鍏冪礌 system("pause"); void print_space(int n) //杈撳嚭n涓┖鏍?br>{ int i = 1, j = 0; //寰幆闃熷垪鐨勬ā鏉跨被澹版槑
#ifndef CYCQUEUE_H #include <iostream> template<class T> void clear() {rear = front = 0;}; #include "CycQueue.cpp"
寰幆闃熷垪涓昏娉ㄦ剰涓嶈蹇樿%len錛屼笉鐒跺氨閮芥槸鑾悕閿欒鍟︼紒 緙虹偣錛氬洜涓烘暟緇勯暱搴︿笉鑳藉湪榪愯鏃剁‘瀹氾紝鎵浠ユ潹杈変笁瑙掑艦鐨勯暱搴︿笉鑳介氳繃鐢ㄦ埛鑷杈撳叆紜畾銆?
#include<iostream>
using namespace std;
const int N = 10;
涓縐嶆柟娉曪細 瀵圭粰瀹氱殑寰呮帓搴忓簭鍒楋紝闅忔満鍦伴噸鎺掑垪
鍙︿竴縐嶆柟娉曪細闅忔満閫夊彇pivot
緇欏嚭絎簩縐嶆柟娉曠殑浠g爜 闃呰鍏ㄦ枃
]]>
Select(int* a, int n, int ith): 浠庣粰瀹氱殑n涓厓绱犱腑鎵懼嚭絎琲涓皬鐨勫厓绱?
鎬濇兂錛歈uickSort鐨凱artition鏂規硶榪涜鍒嗗壊
濡傛灉 i = rank(pivot), 鍒欒繑鍥瀉[k]
濡傛灉 i < rank(pivot), 鍒欎粠鍓嶅崐閮ㄥ垎涓壘絎琲涓皬鐨勫厓绱?
濡傛灉 i > rank(pivot), 鍒欎粠鍚庡崐閮ㄥ垎涓壘絎琲-rank(pivot)涓皬鐨勫厓绱?
鏈鍧忚繍琛屾椂闂碠(n^2)
騫沖潎榪愯鏃墮棿O(nlgn) 闃呰鍏ㄦ枃
]]>
璁℃暟鎺掑簭涓嶆槸鍩轟簬姣旇緝鐨勬帓搴忔柟娉曪紝浠庤屾渶鍧忔儏褰笅鐨勮繍琛屾椂闂翠篃涓嶅彈姣旇緝鐨勬帓搴忔柟娉曟渶蹇玂(nlgn)鐨勯檺鍒躲?
璁℃暟鎺掑簭鐨勮繍琛屾椂闂存槸O(n+m) 闃呰鍏ㄦ枃
]]>
/**//*
2 * 鍫嗘帓搴?br> 3
* O(nlgn)
4 */
5
6#include <iostream>
7#include <cstdlib>
8
9#define LEFT(i) (2*i+1)
10#define RIGHT(i) (2*i+2)
11#define PARENT(i) ( (i-1)/2 )
12
13using namespace std;
14
15//浜ゆ崲涓や釜鍏冪礌鍊?nbsp;
16void swap(int& a, int& b);
17//杈撳嚭鏁扮粍鍏冪礌
18void print(int*a, int n);
19
20//淇濇寔鍫嗘ц川錛屽綋宸﹀彸瀛愭爲閮芥槸鍫嗘椂錛屼絾a[i]鍙兘榪濆弽鍫嗘ц川鏃訛紝璋冩暣鎴愬爢
21void MaxHeapify(int *a, int i, int n)
22{
23 int left = LEFT(i);
24 int right = RIGHT(i);
25 int largest = i;
26
27 if(left < n && a[left] > a[largest] )
28 largest = left;
29 if(right < n && a[right] > a[largest])
30 largest = right;
31 if(largest != i)
32
{
33 swap(a[i],a[largest]);
34 MaxHeapify(a,largest,n);
35 }
36}
37
38//鍒涘緩鍫?nbsp;
39void BuildMaxHeap(int* a, int n)
40{
41 //浠庢湁瀛愭爲鐨勫紑濮?nbsp;
42 for(int i = PARENT(n-1); i >= 0; i--)
43
{
44 MaxHeapify(a,i,n);
45 }
46}
47
48void HeapSort(int *a, int n)
49{
50 //鍒涘緩鍫?nbsp;
51 BuildMaxHeap(a, n);
52 for(int i = n -1; i >= 1; i--)
53
{
54 //鎶婃渶澶у厓绱犳斁鍦ㄦ渶鍚庯紝涓嬩竴姝ヤ笉浜堣冭檻
55 swap(a[i],a[0]);
56 MaxHeapify(a,0,i); //榪欓噷涓嶆槸MaxHeapify(a,0,i-1);
57 }
58}
59
60
61//浜ゆ崲涓や釜鍏冪礌鍊?nbsp;
62void swap(int& a , int& b)
63{
64 int temp = a;
65 a = b;
66 b = temp;
67}
68
69//鎵撳嵃鏁扮粍
70void print(int* a , int n)
71{
72 for(int i = 0; i < n ; i++)
73 cout << a[i] << ",";
74 cout << endl;
75}
76
77
78int main()
79{
80 const int N = 10;
81 int a[N] =
{4,1,3,2,16,9,10,14,8,7};
82
83 print(a,N);
84
85 HeapSort(a,N);
86
87 print(a,N);
88
89 system("pause");
90 return 0;
91}
]]>
** 瀵圭敤鎴瘋緭鍏ョ殑浠繪剰涓緇勫簭鍒楋紝璁$畻鍏舵渶澶у煎拰鏈灝忓?br>** 騫朵笉鏄敤vector榪欑被瀹瑰櫒瀛樺偍鏁翠釜搴忓垪涓殑鏁版嵁
** 鎬濇兂錛氬畾涔塵in錛宮ax錛岀敤杈撳叆搴忓垪鐨勭涓涓厓绱犲垵濮嬪寲
** 鑻ヨ緭鍏ユ祦涓厓绱犲皬浜巑in錛屽垯鐢ㄨ鍊兼浛鎹in錛岃嫢澶т簬max,鍒欐浛鎹㈡帀 max
** 閲嶅杈撳叆 錛屾瘮杈?N嬈?br>
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
int main()
{
int v = 0;
int min, max;
cout << "Enter numbers: ";
cin >> v;
min = max = v;
while(cin >> v)
{
if(v < min) min = v;
else if(v > max) max = v;
else;
}
cout << "min = " << min << ", max = " << max <<endl;
return 0;
}
]]>
n != m鏃訛紝榪愯鏃墮棿涓篛(m+n),杈呭姪絀洪棿涓篛(m)
n == m鏃剁壒孌婂鐞嗭紝榪愯鏃墮棿涓篛(N), 杈呭姪絀洪棿涓篛(1) 闃呰鍏ㄦ枃
]]>
Java涓瘮杈冩搷浣滆楁椂澶氾紝鑰屽鍒跺垯鑰楁椂灝戯紝浠庤屽綊騫舵帓搴忔槸Java涓富瑕佹帓搴忔柟娉曘?
鑰屽湪C++ STL涓揩閫熸帓搴忔槸鍩烘湰鎺掑簭鏂規硶銆?nbsp; 闃呰鍏ㄦ枃
]]>
鏈鍧忔儏褰細瀵逛簬棰勬帓搴忕殑搴忓垪銆?
瀵逛笌鏋㈢航鍏冪浉絳夌殑鍏冪礌澶勭悊錛?
i,j閮藉仠姝細浼氭瘮杈冪浉絳夊厓绱狅紝浣嗘槸鍙互鍒掑垎鎴愰暱搴︾浉褰撶殑涓や釜瀛愭暟緇?
i,j閮戒笉鍋滄錛屼笉浼氭瘮杈冪浉絳夊厓绱狅紝浣嗘槸鍙兘浜х敓闀垮害涓嶅鉤琛$殑涓や釜瀛愭暟緇?涓庢灑綰藉厓鐩哥瓑鐨勫厓绱犺緝澶氭椂)鏋㈢航鍏冪殑閫夊彇錛?
1. 閫夊彇絎竴涓厓绱犲仛鏋㈢航鍏冿細瀵逛簬錛堥儴鍒嗭級棰勬帓搴忕殑搴忓垪榪愯鏃墮棿O(N^2)
2. 闅忔満鐢熸垚鏋㈢航鍏冿細鑳介伩鍏嶄笂榪伴棶棰橈紝浣嗘槸浜х敓鏋㈢航鍏冪殑浠d環楂?
3. 涓夋暟涓煎垎鍓叉硶錛氶夊彇宸︾錛屽彸绔紝涓棿浣嶇疆涓変釜鍏冪礌鐨勪腑鍊?nbsp; 闃呰鍏ㄦ枃
]]>/**//*-------------------------------------------------------------------------------------
2Shell_sort.h
3shell鎺掑簭鏄鐩存帴鎻掑叆鏂規硶鐨勬敼榪涳紝瀹冨茍涓嶆槸瀵圭浉閭誨厓绱犺繘琛屾瘮杈冿紝鑰屾槸瀵逛竴瀹氶棿闅旂殑鍏冪礌姣旇緝.
4閫夋嫨澧為噺搴忓垪鐨勫嚑縐嶆柟娉曪細(涓烘柟渚匡紝鏈緥閲囩敤絎竴縐嶅閲忓簭鍒?
51. h[1]=size錛?nbsp;h[k] = h[k-1]/2.
6 鏈鍧忚繍琛屾椂闂翠負O(N^2).
7 鏈鍧忔儏褰細鏁扮粍闀垮害涓?^n,鏁扮粍鐨勫伓鏁頒綅緗笂鍚屾槸涓涓暟錛屽鏁頒綅緗笂涔熷悓鏄竴涓暟錛?br> 8
涓旀瘮鍋舵暟浣嶇疆鐨勫皬銆傛鏃跺埌鏈鍚庝竴嬈¢亶鍘嗗墠shell鎺掑簭瀹為檯涓婁粈涔堜篃娌″仛銆?br> 9
鏈鍚庝竴嬈¢亶鍘嗙浉褰撲簬鐩存帴鎻掑叆鏂規硶銆?br>10
2. Hibbard澧為噺搴忓垪錛?nbsp;h = 1,3,7,
,2^k-1
11 榪欎釜鐨勫尯鍒簬涓婄殑涓昏鐨勭壒鐐規槸鐩擱偦澧為噺娌℃湁鍏洜瀛?br>12
鏈鍧忚繍琛屾椂闂翠負O(n^{1.5});
133. Sedgewick澧為噺搴忓垪錛歿1錛?錛?9錛?1錛?09錛?img src="http://www.shnenglu.com/Images/dot.gif">}
14-------------------------------------------------------------------------------------*/
15
16#ifndef SHELL_SORT_H
17#define SHELL_SORT_H
18
19#include "typedef.h"
20
21void Shell_sort(T* a, int n)
22{
23
24 for(int gap = n; gap > 0; gap = gap/2)
25
{
26 for(int i = 0; i != n; ++i)
27
{
28 T temp = a[i];
29 int j = i - gap;
30 for( ; j >= 0 && a[j] > temp; j = j-gap)
31 a[j+gap] = a[j];
32 a[j+gap] = temp;
33 }
34 }
35}
36
37#endif
]]>
/**//*-------------------------------------------------------------------------------------------
2Bubble_sort.h
3鍐掓場鎺掑簭錛?nbsp;鏃墮棿澶嶆潅搴︿負O(N^2)
4鏀硅繘鐨勫啋娉℃帓搴忥細 鏃墮棿澶嶆潅搴︿粛涓篛(N^2)
5 涓鑸殑鍐掓場鎺掑簭鏂規硶鏈夊彲鑳戒細鍦ㄥ凡緇忔帓濂藉簭鐨勬儏鍐典笅緇х畫姣旇緝錛屾敼榪涚殑鍐掓場鎺掑簭
6 璁劇疆浜嗕竴涓摠鍏礷lag錛屽鏋滀竴嬈or寰幆娌℃湁榪涜浜ゆ崲錛屽垯鍏冪礌宸茬粡鎺掑ソ搴忥紝鐢卞摠鍏墊帶鍒墮鍑哄驚鐜?br> 7
-------------------------------------------------------------------------------------------*/
8#ifndef BUBBLE_SORT_H
9#define BUBBLE_SORT_H
10
11#include "typedef.h"
12#include "swap.h"
13
14//鍐掓場鎺掑簭
15void Bubble_sort(T *a, int n)
16{
17 for(int i=n-1; i != 0; --i)
18 for(int j=0; j != i; ++j)
19 if(a[j+1] < a[j]) swap(a[j+1],a[j]);
20}
21
22//鏀硅繘鐨勫啋娉℃帓搴?/span>
23void Improved_Bubble_sort(T *a, int n)
24{
25 for(int i=n-1; i != 0; --i)
26
{
27 bool flag = true;
28 for(int j=0; j != i; ++j) //榪欎竴瓚熼亶鍘嗗鏋滄病鏈変氦鎹紝鍒欏凡瀹屾垚鎺掑簭
29 if(a[j+1] < a[j])
{ swap(a[j+1],a[j]); flag = false; }
30 if(flag == true) break;
31 }
32}
33
34#endif
]]>/**//*--------------------------
2typedef.h
3鏂逛究淇敼寰呮帓搴忓厓绱犵被鍨?br> 4
-------------------------------------*/
5#ifndef TYPEDEF_H
6#define TYPEDEF_H
7
8typedef int T;
9
10#endif
鎻掑叆鎺掑簭錛?
/**//*---------------------------------------------------------------------------------------
2Insertion_sort.h
3鐩存帴鎻掑叆鎺掑簭
4瀵逛互鏁扮粍褰㈠紡緇欏嚭鐨勫厓绱犳帓搴?br> 5
鏃墮棿澶嶆潅搴︿負(閫嗗簭鏁?N(N-1)/4 = O(N^2),騫朵笖鍦ㄦ渶鍧忔儏褰笅杈懼埌榪欎釜鍊?br> 6
鏈濂芥儏褰笅榪愯N嬈★紝鏈鍧忔儏褰笅榪愯2+3+…+N
7------------------------------------------------------------------------------------------------*/
8
9#ifndef INSERTION_SORT_H
10#define INSERTION_SORT_H
11
12#include "typedef.h"
13//鐩存帴鎻掑叆鎺掑簭
14void Insertion_sort(T *a, int n)
15{
16 for(int i = 1; i != n; ++i)
17
{
18 T temp = a[i];
19 int j = i - 1;
20 for(; j >= 0 && temp < a[j]; --j )
21 a[j + 1] = a[j];
22 a[j + 1] = temp;
23 }
24}
25
26#endif
鐩存帴閫夋嫨鎺掑簭錛?br>
/**//*----------------------------------------------
2DirectSelection_sort.h
3鐩存帴閫夋嫨鎺掑簭
4鏃墮棿澶嶆潅搴(N^2)
5--------------------------------------------------------*/
6#ifndef DIRECTSELECTION_SORT_H
7#define DIRECTSELECTION_SORT_H
8
9#include "typedef.h"
10#include "swap.h"
11
12//鐩存帴閫夋嫨娉曟帓搴?/span>
13void DirectSelection_sort(T*a, int n)
14{
15 for(int i = 0; i != n; ++i)
16
{
17 int k = i;
18 for(int j = i; j != n; ++j)
19 if(a[j] < a[k]) k = j;
20 swap(a[k],a[i]);
21 }
22}
23
24#endif
]]>
#include <iostream>
2#define n 11
3#define m ((n+1)/2)
4using namespace std;
5
6void main(void)
7{
8 int num[] =
{11,2,3,4,6,5,7,8,9,10,20};
9 //int n = sizeof(num)/sizeof(num[0]);
10 //int m = (n+1)/2;
11 int max[m] , min[m];
12 int k = 0, j = 0;
13
14 if(n/2 != 0) max[m-1] = min[m-1] = num[n-1];
15
16 for (int i=0; i < n-1; i = i+2)
17
{
18 if (num[i] >= num[i+1])
19
{
20 max[j++] = num[i];
21 min[k++] = num[i+1];
22 }
23 else
24
{
25 max[j++] = num[i+1];
26 min[k++] = num[i];
27 }
28
29 }
30
31 for( i=0; i< m; i++)
32
{
33 cout << "max[" << i << "] = " << max[i] << "\t";
34 cout << "min[" << i << "] = " << min[i] <<endl;
35 }
36
37 int MAX = max[0];
38 int MIN = min[0];
39
40 for ( j = 1; j < m; j++)
41
{
42 if (max[j] > MAX) MAX = max[j];
43 if (min[j] < MIN) MIN = min[j];
44 }
45
46 cout << "MAX = " << MAX << ", MIN = " << MIN <<endl;
47}
]]>
//eight queens problem錛屾誨叡鏈?2涓В.
//鍏殗鍚庨棶棰橈細鍦?*8鐨勬柟鏍兼鐩樹笂瀹夌疆8涓瀛愶紙鐨囧悗錛?br>//瑕佹眰錛氫換浣曚袱涓瀛愰兘涓嶈兘鍦ㄦ鐩樼殑鍚屼竴琛岋紝鍚屼竴鍒楁垨鍚屼竴瀵硅綰夸笂銆?/font>
using namespace std;
static int num = 0;
void print(int a[][N],int row); //娉ㄦ剰浜岀淮鏁扮粍濡備綍璋冪敤
//鍒ゆ柇姝ラ鏄惁鏈夋晥
bool is_valid(int i, int j);
//鎺㈢儲錛岄亶鍘?/font>
void traversal(int i);
{
traversal(0);
cout << "There are " << num << " solutions for eight queens problems" <<endl;
return 0;
}
void traversal(int i)
{
if(i >= 8)
{
print(a, N);
}
for(int j = 0; j != N; ++j)
{
a[i][j] = 1;
if(is_valid(i,j)) traversal(i+1);
a[i][j] = 0;
}
}
bool is_valid(int i, int j)
{
bool b = true;
for(int i1 = 0; i1 != i; ++i1)
for(int j1 = 0; j1 != N; ++j1)
{
if(a[i1][j1] == 1)
if((j1 == j) || ( abs(i1 - i) == abs(j1 - j)) ) b = false;
}
return b;
}
void print(int a[][N],int row)
{
++num;
for(int i = 0; i != row; ++i)
{
for(int j = 0; j != N; ++j)
cout << a[i][j] << " ";
cout << endl;
}
}
鏂囩珷鏉ユ簮:http://liyuxia-life.spaces.live.com/Blog/cns!DA1B364675ACF35!272.entry
]]>
//杈撳嚭鏉ㄨ緣涓夎褰?br>//綆楁硶鎬濇兂錛氶鍏堝湪寰幆闃熷垪涓瓨鏀劇涓夎鐨?1錛?錛?鍜岀鍥涜鐨?.
//鑻ュ驚鐜槦鍒楅槦澶村厓绱犲拰闃熷ご絎簩涓厓绱犲潎涓?錛屽垯浠庨槦澶村垹闄や竴涓?錛屽湪闃熷熬鎻掑叆涓や釜1.
//鑻ヤ笉鐒訛紝灝嗛槦瀵瑰ご鍏冪礌鍜岄槦澶寸浜屼釜鍏冪礌鐩稿姞錛屽皢鍜屽兼彃鍏ュ埌闃熷熬錛屽垹闄ゅ澶翠竴涓厓绱犮?br>//鑻ユ兂杈撳嚭鏉ㄨ緣涓夎褰琛岋紝灝嗗驚鐜槦鍒楅暱搴﹁緗垚 n+2銆?br>//杈撳嚭錛氬墠涓よ鐩存帴杈撳嚭銆傚畾涔変簡print鍑芥暟鎺у埗鍚庨潰姣忚杈撳嚭鐨勫厓绱犱釜鏁?br>#include "Queue.h"
#include "CycQueue.h"
#include <iostream>
using namespace std;
void print_space(int n);
//n琛屾潹杈変笁瑙掑艦鐨勮緭鍑烘牸寮?/font>
void print(int k, int n);
{
int n;
cout << "Please enter the YangHui Triangle row number n:";
cin >> n;
YHTri.push(2);
YHTri.push(1);
YHTri.push(1);
//杈撳嚭鍓嶄袱琛?/font>
print(1,n);
print(1,n);
print(1,n);
while( !YHTri.full())
{
int a,b;
//鑻ラ槦澶村厓绱犲拰闃熷ご絎簩涓厓绱犲潎涓?
if( (YHTri.top() == 1) && (YHTri.second() == 1))
{
a = YHTri.pop_top();
YHTri.push(1);
YHTri.push(1);
print(a,n);
}
//鑻ヤ笉鐒?/font>
else
{
a = YHTri.pop_top();
b = YHTri.top();
YHTri.push(a + b);
print(a,n);
}
}
while( !YHTri.empty())
{
print(YHTri.pop_top(),n);
}
return 0;
}
while(n--) cout << " ";
}
void print(int k, int n) //n琛屾潹杈変笁瑙掑艦鐨勮緭鍑烘牸寮?br>{
if( i==1 ) print_space(n);
if(j++ != i) ;
else
{
cout << endl;
print_space(n-i);
++i;
j = 1;
}
cout << k <<" ";
}
#define CYCQUEUE_H
using namespace std;
class CycQueue:public Queue<T>
{
public:
CycQueue(int maxsz = 100):len(maxsz)
{
elems = new T[maxsz];
front = rear = 0;
};
~CycQueue(){delete[] elems; };
int size()const
bool full()const
bool empty()const
bool push(const T& item);
bool pop();
T top()const;
T pop_top();
T second()const;
protected:
private:
int front;
int rear;
int len;
T* elems;
};
#endif
鏂囩珷鏉ユ簮:http://liyuxia-life.spaces.live.com/Blog/cns!DA1B364675ACF35!271.entry
]]>
int main()
{
int a[N]={0};
a[0]=1;
for(int i=1; i!=N;++i)
{
int m = N - i;
//杈撳嚭絀烘牸
while(m != 0 )
{
cout << " ";
--m;
}
//杈撳嚭
for(int j=0;j != i;++j)
cout << a[j] << " ";
cout << endl;
//璧嬪?/font>
a[i]=1; //鏈鍚庝竴涓厓绱犺祴鍊?
for(int j=i-1;j!=0;--j)
a[j]=a[j]+a[j-1];
}
return 0;
}
鏂囩珷鏉ユ簮:http://liyuxia-life.spaces.live.com/Blog/cns!DA1B364675ACF35!270.entry
]]>