Сортировка элементов массива

#c #sorting #stl

#c #сортировка #stl

Вопрос:

 void sort ( RandomAccessIterator first, RandomAccessIterator last, Compare_func );
  

Как Compare_func работает? Я хочу отслеживать это для каждого ввода.
Сортировка в порядке возрастания:

 bool Compare_func(int i,int j) 
{ 
    return (i<j); 
}
  

Как передаются параметры Compare_func ? Например, для

 array = {12,40,1,36};
  

Комментарии:

1. Должна ли эта последняя строка быть int array[] = {12, 40, 1, 36}; ?

2. Это пример данных, которые я пытаюсь отсортировать.

Ответ №1:

sort Алгоритм будет вызывать функцию сравнения несколько раз, каждый раз с двумя записями из вашего массива. Вы не знаете, и вам не должно быть важно, сколько раз или в каком порядке будет вызвана ваша функция сравнения.

Комментарии:

1. Ну, обычно это вызывалось бы O (n.log(n)) раз

Ответ №2:

Проверьте сами:

 bool Compare_func(int i,int j) 
{ 
    std::cout << "Comparing " << i << " with " << j << 'n';
    return (i<j); 
}
  

Просто имейте в виду, что результаты применимы только к вашей конкретной реализации.

Ответ №3:

Алгоритмомсортировки может быть любой возможный алгоритм. Вам не нужно знать, какой из них используется (пузырьковая сортировка, быстрая сортировка и т.д.). Алгоритм последовательно выберет пару данных и сравнит их, затем решит, перемещает ли он их или нет. При каждом сравнении ваша функция сравнения сообщает алгоритму, меньше ли первый элемент второго или нет. Функция сортировки получит только два значения, указанные итератором.