от
Я собираю так:
clang   

Реализация терпит неудачу test2 "Утверждение не удалось: (массив [i] == i), функция test2, файл test.cpp, строка ...
Прерывание прерывания: 6 ". Тест создает массив размером 10000 (с целыми числами от 0 до 10000 в случайном порядке) и использует сортировку по типу heapsort и класс MinHeap для сортировки по порядку.

100% -ная сортировка осуществляется правильно Я прошел логику основных функций MinHeap (insert -> bubble_up, extract -> bubble_down), но не могу найти ошибки.

test.cpp

#include 
#include 

#include "MinHeap.hpp"

#include 

void heapsort(int* const array, int size){
  MinHeap heap;

  for (int i = 0; i < size; i  ){
    heap.insert(array[i]);
  }

  for (int i = 0; i < size; i  ){
    array[i] = heap.extractMin();
  }
}

void test2(){
  int size = 10000;
  int* array = new int[size];
  for(int i = 0; i < size; i  ){
    array[i] = i;
  }

  unsigned int seed = 2019;
  std::srand(seed);
  for(int i = 0; i < size; i  ){
    int index1 = std::rand() % size;
    int index2 = std::rand() % size;

    int number1 = array[index1];
    array[index1] = array[index2];
    array[index2] = number1;
  }

  heapsort(array, size);

  for(int i = 0; i < size; i  ){
    assert(array[i] == i);
  }

  delete [] array;
}

int main(){
  insert_test();
  extract_test();
  test2();
  return 0;
}
MinHeap.hpp
#ifndef MINHEAP_HPP
#define MINHEAP_HPP

class MinHeap{
public:
  MinHeap();
  //  MinHeap(const MinHeap

Ваш ответ

Отображаемое имя (по желанию):
Конфиденциальность: Ваш электронный адрес будет использоваться только для отправки уведомлений.
Анти-спам проверка:
Чтобы избежать проверки в будущем, пожалуйста войдите или зарегистрируйтесь.
...