t-bruce-yu

调试得有点蛋疼……都知道原理,就附上代码咯……

quick_sort.h

 1 #ifndef QUICK_SORT_H
 2 #define QUICK_SORT_H
 3 #include <vector>
 4 #include <iostream>
 5 using namespace std;
 6 class quick_sort
 7 {
 8 public:
 9     quick_sort();
10     void sort(int start, int end);
11     void partition(int start, int end);
12     void output();
13     int get_size();
14 private:
15     vector <int> vct;
16     void _swep(int pos1, int pos2);
17 };
18 
19 #endif // QUICK_SORT_H

 

quick_sort.cpp

 

 1 #include "quick_sort.h"
 2 #include <stdlib.h>
 3 #include <time.h>
 4 #include <stdexcept>
 5 
 6 quick_sort::quick_sort()
 7 {
 8     srand((unsigned)time(NULL));
 9     for (int loop_var = 0; loop_var != 10; loop_var++) {
10         vct.push_back(rand() %100);
11     }
12 }
13 void quick_sort::sort(int start, int end)
14 {
15     if (start > end || end > vct.size()) {
16         return;
17     }
18     if (start == end) {
19         return ;
20     }
21     int rand_pos = rand()%(end - start)+start;      //get the random postion
22     cout << "postion:" << rand_pos << endl;
23     this->_swep(start, rand_pos);                   //move to first place
24     int last = start;
25     for (int loop_var = start; loop_var <= end; loop_var++) {       //patition
26         if (vct[loop_var] < vct[start]) {
27             last++;
28             this->_swep(loop_var, last);
29         }
30     }
31     this->_swep(start, last);                       //move to the current place
32     sort(start, last);
33     sort(++last, end);
34 }
35 
36 void quick_sort::output()
37 {
38     for (vector<int>::iterator iter = vct.begin(); iter != vct.end(); iter++) {
39         cout << *iter << " ";
40     }
41     cout << endl;
42 }
43 int quick_sort::get_size()
44 {
45     return vct.size();
46 }
47 
48 void quick_sort::_swep(int pos1, int pos2)
49 {
50     if(pos1 >= vct.size() || pos2 >= vct.size()) {
51         throw runtime_error("the postion is not true!\n");
52     }
53     int temp = vct[pos1];
54     vct[pos1] = vct[pos2];
55     vct[pos2] = temp;
56 }

 

 

 

 1 #include <iostream>
 2 #include <vector>
 3 #include "quick_sort.h"
 4 using namespace std;
 5 
 6 int main(int argc, char *argv[])
 7 {
 8     quick_sort qs;
 9     qs.output();
10     qs.sort(0, qs.get_size()-1);
11     qs.output();
12 }

 

 

 

分类:

技术点:

相关文章:

  • 2021-11-19
  • 2021-11-19
  • 2021-07-13
  • 2021-10-12
  • 2021-11-19
  • 2021-11-19
猜你喜欢
  • 2022-01-29
  • 2021-11-19
  • 2021-11-19
  • 2021-08-31
  • 2021-11-19
  • 2021-11-13
  • 2021-11-19
相关资源
相似解决方案