Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string.h>
- template<class T>
- void quickSort(T* a, long N)
- {
- long i = 0, j = N;
- // выбор опорного элемента
- T p = a[N >> 1];
- do {
- // поиск элемента для переноса в старшую часть
- while (a[i] < p) {
- i++;
- }
- // поиск элемента для переноса в младшую часть
- while (a[j] > p) {
- j--;
- }
- if (i <= j) {
- std::swap(a[i], a[j]);
- i++;
- j--;
- }
- } while (i <= j);
- // рекурсивное упорядочивание подмассивов, лежащих слева и справа от опорного элемента.
- if (j > 0) {
- quickSort(a, j);
- }
- if (i < N) {
- quickSort(a+i, N-i);
- }
- }
- int main()
- {
- setlocale(LC_ALL, "Russian");
- char str[] = "бвгдеекувалв";
- quickSort(str, strlen(str)-1);
- std::cout << str << std::endl;
- int a[] = {2, 5, 101, 20, 8, 0, 9, 12, 11, 10, 36, 3, 4};
- quickSort(a, sizeof(a) / sizeof(a[0]) - 1);
- for (int i = 0; i < sizeof(a) / sizeof(a[0]); i++) {
- std::cout << a[i] << " ";
- }
- std::cout << std::endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment