锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
using namespace std;
class suanfa {
public:
/*灝哸[i]涓烘牴鑺傜偣鐨勫瓙鏍戠敓鎴愭渶澶у爢!*/
void heapify(int* a, int i);
/*鑾峰彇鐖惰妭鐐?鍦ㄨ繖閲屾病鐢?/span>*/
int parent(int i);
/*鑾峰彇宸﹀瓙鏍?鏁扮粍搴忓彿*/
int left(int i);
/*鑾峰彇鍙沖瓙鏍?鏁扮粍搴忓彿*/
int right(int i);
/*浜ゆ崲2涓?/span>*/
void swap(int *a ,int i, int j);
/*鏆傛椂鍏堜笉鐢?-鏃ュ悗鍐嶇敤*/
void max_heapify(int* a, int heapsize);
~suanfa();
};
int suanfa::left(int i){
return 2*i + 1;
}
int suanfa::right(int i){
return 2*i+2;
}
int suanfa::parent(int i){
return i/2;
}
suanfa::~suanfa(){
//delete [] a;
//m_array = NULL;
cout << "鎴戣鏋愭瀯浜?/span>" << endl;
}
void suanfa::heapify(int* a, int i){
int l = left(i);
int r = right(i);
int largest = 0;//浠[i]涓烘牴鑺傜偣鐨勫瓙鏍戠殑鏈澶у肩殑鏁扮粍涓嬫爣
int size = 10;//heapsize 榪欓噷=鏁扮粍鐨勫ぇ灝?/span>
/**鑾峰彇璇ュ瓙鏍戞渶澶т笅鏍?/span>*/
if (l <= size - 1 && a[l] > a[i]) {
largest = l;
}else {
largest = r;
}
if (r <= size - 1 && a[r] > a[largest]) {
largest = r;
}
/*濡傛灉鏍硅妭鐐逛笉鏄敼瀛愭暟緇勬渶澶у?鍒欒繘琛屼氦鎹?/span>*/
if (a[i] < a[largest]) {
swap(a, i, largest);
heapify(a, largest);
}
}
void suanfa::swap(int* a, int i, int j){
int key = a[i];
a[i] = a[j];
a[j] = key;
}
void suanfa::max_heapify(int* a, int heapsize){
//j->(heapsize-1)/2鐨勫瓙鏁扮粍鏄渶澶у爢.
for(int j = (heapsize - 1) / 2; j >=0; --j)
{
heapify(a,j);
}
}
int main () {
suanfa sf;
int a[] = {16,4,10,14,7,9,3,2,8,1};
int size = sizeof a / sizeof a[0];
for(int j = (size - 1) / 2; j >=0; --j)
{
sf.heapify(a,j);
}
for (int i=0; i<size; i++) {
cout << a[i] << " ";
}
cout << endl;
return 0;
}
]]>
棣栧厛錛孞ava 璇█涓殑娉涘瀷涓嶈兘鎺ュ彈鍩烘湰綾誨瀷浣滀負綾誨瀷鍙傛暟鈥曗曞畠鍙兘鎺ュ彈寮曠敤綾誨瀷銆傝繖鎰忓懗鐫鍙互瀹氫箟 List<Integer>錛屼絾鏄笉鍙互瀹氫箟 List<int>銆?nbsp;
鍏?嬈★紝鍦?C++ 妯℃澘涓紝緙栬瘧鍣ㄤ嬌鐢ㄦ彁渚涚殑綾誨瀷鍙傛暟鏉ユ墿鍏呮ā鏉匡紝鍥犳錛屼負 List<A> 鐢熸垚鐨?C++ 浠g爜涓嶅悓浜庝負 List<B> 鐢熸垚鐨勪唬鐮侊紝List<A> 鍜?List<B> 瀹為檯涓婃槸涓や釜涓嶅悓鐨勭被銆傝?Java 涓殑娉涘瀷鍒欎互涓嶅悓鐨勬柟寮忓疄鐜幫紝緙栬瘧鍣ㄤ粎浠呭榪欎簺綾誨瀷鍙傛暟榪涜鎿﹂櫎鍜屾浛鎹€傜被鍨?ArrayList<Integer> 鍜?ArrayList<String> 鐨勫璞″叡浜浉鍚岀殑綾伙紝騫朵笖鍙瓨鍦ㄤ竴涓?ArrayList 綾匯?/span>
]]>
2 // Name : suanfa.cpp
3 // Author : dream
4 // Version :
5 // Copyright : powered by YeQiangWei
6 // Description : Hello World in C++, Ansi-style
7 //============================================================================
8
9 #include <iostream>
10 using namespace std;
11 /*榛樿閮藉畨鍗囧簭鎺掑垪*/
12 class Algorithm {
13 public:
14 /*鍒嗘不娉?/span>*/
15 void merge_sort(int* a, int p, int r);
16 void merge(int* a, int p, int q, int r);
17 /**閫夋嫨鎺掑簭*/
18 void select_sort(int* a, int length);
19 /*鎻掑叆鎺掑簭*/
20 void insert_sort(int* a, int length);
21 /*鍐掓場鎺掑簭*/
22 void bubble_sort(int* a, int length);
23 };
24 void Algorithm::bubble_sort(int* a, int length) {
25 for (int i = 1; i < length; i++) {
26 for (int j = 0; j <= i; j++) {
27 if (a[i] < a[j]) {
28 int key = a[j];
29 a[j] = a[i];
30 a[i] = key;
31 }
32 }
33
34 }
35 }
36 void Algorithm::insert_sort(int* a, int length) {
37 cout << length << endl;
38 for (int i = 1; i < length; i++) {
39 int j = i - 1;
40 int key = a[i];
41 while (j >= 0 && key < a[j]) {
42 a[j + 1] = a[j];
43 j--;
44 }
45 a[j + 1] = key;
46 }
47 }
48 void Algorithm::merge(int* a, int p, int q, int r) {
49 int n1 = q - p + 1;
50 int n2 = r - q;
51 int* L = new int[n1 + 1];
52 int* R = new int[n2 + 1];
53 for (int m = 0; m < n1; m++) {
54 L[m] = a[p + m];
55 }
56 for (int n = 0; n < n2; n++) {
57 R[n] = a[q + n + 1];
58 }
59 int i = 0;
60 int j = 0;
61 for (int k = p; k <= r; k++) {
62 if (L[i] <= R[j]) {
63 a[k] = L[i];
64 i++;
65 } else {
66 a[k] = R[j];
67 j++;
68 }
69 }
70 }
71
72 void Algorithm::merge_sort(int* a, int p, int r) {
73
74 int q = 0;
75 //cout << "榪欓噷鍏跺疄榪樻槸鎵ц浜嗙殑" << q << endl;
76 if (p < r) {
77 q = (p + r) / 2;
78 merge_sort(a, p, q);
79 merge_sort(a, q + 1, r);
80 merge(a, p, q, r);
81 }
82 }
83
84 void Algorithm::select_sort(int* a, int length) {
85 if (NULL == a)
86 return;
87 cout << length << endl;
88 for (int i = 0; i < length; i++) {
89 for (int j = i; j < length; j++) {
90 if (a[i] > a[j]) {
91 cout << "a[]=" << a[i] << endl;
92 int key = a[i];
93 a[i] = a[j];
94 a[j] = key;
95 }
96 }
97 }
98 }
99
100 int main() {
101 int a[] = { 3, 5, 7, 9, 4, 8, 2, 1 };
102 int length = sizeof(a) / sizeof(a[0]);
103 Algorithm al;
104 al.bubble_sort(a, length);
105 for (size_t i = 0; i < (sizeof(a) / sizeof(a[0])); i++) {
106 cout << a[i] << " ";
107 }
108 return 0;
109 }
110
111
112
]]>
2. c++鐨勬樉紺虹被鍨嬭漿鎹?:
璇硶: [鍑芥暟<瑕佽漿鎹㈢殑綾誨瀷>(琚漿鎹㈢殑鍙橀噺)] 渚嬪: long l = static_cast<long>(i);//灝唅杞崲鎴恖ong鍨?br>
1>. static_cast: 闈欐佺被鍨嬭漿鎹?"鑹?鍜?閫傚害鑹?杞崲, 鍖呮嫭涓嶇敤寮哄埗杞崲,渚嬪鑷姩綾誨瀷杞崲.
2>. const_cast: 甯擱噺綾誨瀷杞崲: 瀵?const"鍜?volatile"榪涜杞崲,鍗蟲妸琚漿鎹㈠彉閲忚漿鎹㈡垚const.
3. 濡傛灉浣犳兂鎹曡幏鍏ㄩ儴寮傚父鏂規硶錛?br> try{
//榪欓噷鏄彲鑳芥姏鍑哄紓甯哥殑浠g爜
}catch錛?..錛墈//榪欓噷澶勭悊寮傚父}
4.闄烽槺錛?br>褰撳湪緙栧啓鐨勪唬鐮佷腑閬囧埌寮傚父鐨勬椂鍊欙紝闈炲父閲嶈鐨勪竴鐐規槸錛岃鑰呭簲璇ラ棶涓涓嬶紝“濡傛灉寮傚父鍙戠敓錛岀▼搴忓崰鐢ㄧ殑璧勬簮琚紜竻鐞嗕簡涔堬紵” 澶у鏁版儏鍐典笅涓嶅繀鎷呭績錛屼絾鏄鏋滃湪涓涓璞$殑鏋勯犲嚱鏁版墽琛岃繃紼嬪綋涓姏鍑哄紓甯革紝閭d箞榪欎釜瀵硅薄鐨勬瀽鏋勫嚱鏁板氨涓嶄細琚皟鐢紝鍥犳錛岀紪鍐欐瀯閫犲嚱鏁扮殑鏃跺欙紝紼嬪簭鍛樺繀欏葷壒鍒殑浠旂粏銆?div>
]]>
* Utils.h
*
* Created on: 2010-1-9
* Author: dream
*/
#ifndef UTILS_H_
#define UTILS_H_
#include <iostream>
#include <fstream>
#include <string>
#include <cstddef>
/**
*甯哥敤宸ュ叿綾?br> */
class StringUtil: char_traits<wchar_t> {
public:
/**
*灝嗗瓧絎︿覆杞崲鎴愬皬鍐?br> */
static const string toLowerCase(string& s) {
string lower(s);
for (size_t i = 0; i < s.length(); ++i) {
lower[i] = tolower(lower[i]);
}
return lower;
}
/**
* 灝嗗瓧絎︿覆杞崲鎴愬ぇ鍐?br> */
static const string toUpperCase(string& s) {
string upper(s);
for (size_t i = 0; i < s.length(); ++i) {
upper[i] = toupper(upper[i]);
}
return upper;
}
/*浠ヤ笅灝嗗涓浜泂tring綾葷殑鏂規硶閲嶈澆錛屼互鎻愪緵蹇界暐澶у皬鍐欑殑鏂規硶*/
///////////////////////////////////////////////////////////////////////
static const bool eq(wchar_t c1st, wchar_t c2nd) {
return towupper(c1st) == towupper(c2nd);
}
static const bool ne(wchar_t c1st, wchar_t c2nd) {
return towupper(c1st) == towupper(c2nd);
}
static const bool lt(wchar_t c1st, wchar_t c2nd) {
return towupper(c1st) < towupper(c2nd);
}
/**
*str1 > str2 榪斿洖 1
*str1 < str2 榪斿洖 -1
*str1 = str2 榪斿洖 0
*/
static const int compare(const wchar_t* str1, const wchar_t* str2, size_t n) {
for (size_t i = 0; i < n; i++) {
if (str1 == 0) {
return -1;
} else if (str2 == 0) {
return 1;
} else if (towlower(*str1) < towlower(*str2)) {
return -1;
} else if (towlower(*str1) > towlower(*str2)) {
return 1;
}
assert(towlower(*str1) == towlower(*str2));
++str1;
++str2;
}
return 0;
}
/**
* 蹇界暐澶у皬鍐欐煡鎵炬寚瀹氬瓧絎︿覆錛岃繑鍥炵殑鏄?6榪涘埗鐨勫?br> *
* 鍥犱負gcc榛樿浣跨敤char鎴栬卻tring綾誨瀷錛屾墍浠ュ嚭鍏ョ涓涓弬鏁扮殑鏃跺欓渶瑕佽繘琛屽己鍒剁被鍨嬭漿鎹?br> *
* @Param wchar_t* s1 : 寰呮煡鎵劇殑瀛楃涓?br> * @Param size_t n: 浠庣N浣嶅紑濮嬫煡鎵?br> * @Param wchar_t c:琚煡鎵劇殑瀵硅薄
*/
static const wchar_t* find(const wchar_t* s1, size_t n, wchar_t c) {
while (n-- > 0) {
if (towupper(*s1) == towupper(c))
return s1;
else
++s1;
}
return 0;
}
};
#endif /* UTILS_H_ */
]]>
瑕佽嚜宸卞疄鐜板叾瀹炲緢綆鍗曪紝鏂規硶濡備笅錛?br>
1 static const string toLowerCase(string& s) {
2 string lower(s);
3 for (size_t i = 0; i < s.length(); ++i) {
4 lower[i] = tolower(lower[i]);
5 }
6 return lower;
7 }
8
9 static const string toUpperCase(string& s) {
10 string upper(s);
11 for (size_t i = 0; i < s.length(); ++i) {
12 upper[i] = toupper(upper[i]);
13 }
14 return upper;
15 }
16
]]>
]]>
]]>