本文主要实践一下算法导论上的快排算法,活动活动。
伪代码图来源于 http://www.cnblogs.com/dongkuo/p/4827281.html
1 // imp the quicksort algorithm 2016.12.21 2 3 #include <iostream> 4 #include <fstream> 5 #include <vector> 6 7 using namespace std; 8 9 int Partion(vector<int> & vec, int b, int e) 10 { 11 int x = vec[e]; 12 int i = b - 1; 13 14 for(int j = b;j < e;j++) 15 if (vec[j] < x) 16 { 17 i += 1; 18 swap(vec[i], vec[j]); 19 } 20 21 swap(vec[i + 1], vec[e]); 22 23 return i + 1; 24 } 25 26 void quickSort(vector<int> & vec,int b,int e) 27 { 28 int q = 0; 29 if (b < e) 30 { 31 q = Partion(vec, b, e); 32 quickSort(vec, b, q - 1); 33 quickSort(vec, q + 1, e); 34 } 35 } 36 37 int main() 38 { 39 ifstream fin("rawData.txt"); 40 ofstream fout("sortedData.txt",ios::out); 41 42 int temp; 43 vector<int> vec; 44 45 while (fin >> temp) { 46 vec.push_back(temp); 47 } 48 49 fout << "Data before sort :" << endl; 50 for each (auto & var in vec) 51 { 52 fout << var << " "; 53 } 54 fout << endl; 55 56 quickSort(vec,0,vec.size() - 1); 57 58 fout << "Data after sort :" << endl; 59 for each (auto & var in vec) 60 { 61 // cout << var << " "; 62 fout << var << " "; 63 } 64 fout << endl; 65 66 fin.close(); 67 fout.close(); 68 69 return 0; 70 }
原始数据位于rawData.txt中如下:
3 2 10 8 6 7 1
运行结果保存在sortedData.txt中如下:
Data before sort :
3 2 10 8 6 7 1
Data after sort :
1 2 3 6 7 8 10