fork download
  1. #include <stdio.h>
  2. #include <vector>
  3. #include <algorithm>
  4. #include <iostream>
  5.  
  6. /*Heap Sort с применением стандартных средств языка*/
  7. void heapsort_std(int a[], int size){
  8. std::vector<int> v;
  9.  
  10. v.assign(a, a + sizeof(a)/sizeof(int)); //Добавили все элементы массива в вектор
  11. std::make_heap(v.begin(), v.end()); //Преобразовали вектор в кучу
  12. //Цикл сортировки
  13. for(int i = size - 1; i >= 0; i--){
  14. std::pop_heap(v.begin(), v.end()); //Переместили наибольший элемент в конец
  15. a[i] = v.back();
  16. v.pop_back(); //Удаляем наибольший элемент кучи из конца вектора
  17. }
  18. }
  19.  
  20. int main(void) {
  21. int v[10] = {7, 1, 3, 6, 5, 8, 9, 4, 0, 2};
  22. heapsort_std(v, 10);
  23. for(int i = 0; i < 10; i++)
  24. std::cout << v[i] << ' ';
  25. return 0;
  26. }
Success #stdin #stdout 0s 3460KB
stdin
Standard input is empty
stdout
0 0 0 0 0 0 0 0 17 7