2010-07-15 3 views
1

Как мне изменить функцию selectionSort для поиска массива строк?Выбор строки Сортировка C++

void selectionSort (int array[], int size) 
{ 
    int startScan, min Index, minValue; 
    for (startScan = 0; startScan<(size-1); startScan++) 
    { 
     minIndex=startScan; 
     minValue=array[startScan]; 
     for(int index = startScan + 1;index<size;index++) 
     { 
      if (array[index] < minValue) 
      { 
       minValue=array[index]; 
       minIndex=index; 
      } 
     } 
    } 
} 
+0

поиск массива строк – mokwi8

+0

Можете ли вы уточнить вопрос немного больше? Я не могу придумать алгоритм поиска, который будет построен на сортировке сортировки. –

+0

Отформатирован код, чтобы быть более читаемым. Тем не менее, в нем нет массива строк или одной строки, поэтому все еще остается непонятным, что вы подразумеваете под этим. –

ответ

0

Создайте функтор, который принимает массив строк и обрабатывает сравнение, как вы хотите (если STL).

1

Как я понимаю ваш вопрос, вам нужно обобщить «>» на строки - вы, очевидно, можете использовать некоторую библиотечную функцию (для строк STL, >), но если это домашняя работа, вы, вероятно, нуждаетесь написать свой собственный. Если мы ограничены ASCII, это довольно просто, в то время как ASCII-коды букв хранятся в алфавитном порядке ((int)'A'<(int)'B').
Чтобы сравнить строки, вы должны начинать с первых букв двух строк, если они не равны, возвращают результат их сравнения, и если они повторяются, переходите к следующей паре.

0

Операторы < и> уже могут обрабатывать сравнение строк в алфавитном порядке. просто перегрузите функцию, чтобы иметь строковый массив [] вместо массива int [] в параметрах. Одна из проблем заключается в том, что эти операторы чувствительны к регистру, поэтому перед выполнением проверки вам нужно будет преобразовать все символы в строку в верхний или нижний регистр.

Смежные вопросы