Endil

qsort

Jun 25th, 2015
244
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.88 KB | None | 0 0
  1. // lab8.cpp: определяет точку входа для консольного приложения.
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include <iostream>
  6. #include <vector>
  7. #include <conio.h>
  8.  
  9. using namespace std;
  10.  
  11. vector<int> v = { 6, 7, 2, 5, 9, 1, 3, 8 };
  12. //vector<int> v = { 1, 2, 3, 4, 5, 6, 7, 8 };
  13.  
  14. void qsort(int field, int idx_begin, int idx_end) {
  15.     int p = (v[idx_begin] + v[idx_end]) / 2, l = idx_begin, r = idx_end;
  16.     while (l < r) {
  17.         while (v[l] < p)
  18.             l++;
  19.         while (v[r] > p)
  20.             r--;
  21.         if (l < r) {
  22.             swap(v[l], v[r]);
  23.             l++, r--;
  24.         }
  25.     }
  26.     if (l > r)
  27.         swap(l, r);
  28.     if (idx_begin < l && l != idx_end)
  29.         qsort(field, idx_begin, l);
  30.     if (r < idx_end && r != idx_begin)
  31.         qsort(field, r, idx_end);
  32. }
  33.  
  34. int _tmain(int argc, _TCHAR* argv[])
  35. {
  36.     qsort(0, 0, v.size() - 1);
  37.     for (int i = 0; i < v.size(); i++)
  38.         cout << v[i] << " ";
  39.     _getch();
  40.     return 0;
  41. }
Advertisement
Add Comment
Please, Sign In to add comment