quickSort算法导论版实现

本文主要实践一下算法导论上的快排算法,活动活动。

伪代码图来源于 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

 

posted @ 2016-12-21 17:26  ilove  阅读(739)  评论(0编辑  收藏  举报