2015-08-27 3 views
-6

Задача состоит в том, чтобы реализовать сортировочную машину, которая сортирует, используя алгоритм выбора сортировки, в котором наименьшие слова и числа помещаются во главе массива. В первом проходе машина применяет сортировку выбора к словам, а во втором - применяется к номерам, так далее и так далее, пока весь текст не будет обработан. Также код способен давать мгновенные ответы, т. Е. Pass no is enterd пользователем it должен показать o/p на этом пропуске. Я на самом деле имею в виду, что код должен быть способен принять пропуск no: означает, что если я вхожу в 3, тогда он должен показать вывод 3-го прохода в select sort.not полностью отсортированный массив.Сортировка строки с использованием номеров сортировки для сортировки также

Вход: 3 // Передаем не из которых результат не желателен

Story 31 of 45 TOM 11 and 90 

Выход:

and 11 of 45 tom 31 story 90 
+1

Вопрос неясен, напишите полные предложения и включите образцы – tomsoft

+0

Почему 'tom' перед' story' и '45' перед' 31'? Похоже, вы хотите иметь слово, затем номер, затем слово, затем номер и т. Д., И отсортировать слова, а также отсортировать числа - это правильно? Что вы пробовали? На каком языке вы пытаетесь это сделать? – Dukeling

+0

да .. exctly и слова должны быть отсортированы им попробовать это в c –

ответ

0

Я надеюсь, что я правильно понял вашу проблему. Я не понимаю, что вы имеете в виду с: «и код способен дать instataneous анса также т.е. не пройти не является enterd пользователь бушелей он должен показать, о/р в этом проходе ..»

реализации в C++

#include <iostream> 
#include <string> 
#include <algorithm> 
#include <vector> 
using namespace std; 


/* Generic in place selection-sort 
* NOTE: T must be comparable with '<' 
*/ 
template<typename T> 
void selectionSort(vector<T> &array){ 
    //For each 'position' we look for the smallest element in the remainder of the array. 
    for(int position = 0; position < array.size(); ++position){ 

     //'selected' keeps track of where the minimum element is. 
     int selected = position; 

     for(int checkPosition = (position+1); checkPosition < array.size(); ++checkPosition){ 
      if(array[checkPosition] < array[selected]){ 
       //if we found a smaller element, then select it. 
       selected = checkPosition; 
      } 
     } 

     //swap the selected element to the currentPosition 
     T temp = array[position]; 
     array[position] = array[selected]; 
     array[selected] = temp; 
    } 
} 




int main(){ 
    vector<string> strings; 
    vector<int> numbers; 

    //read input 
    string str; 
    int num; 
    while(cin >> str){ 
     //convert string to lower case. 
     transform(str.begin(), str.end(), str.begin(), ::tolower); 
     cin >> num; 
     strings.push_back(str); 
     numbers.push_back(num); 
    } 

    //sort 
    selectionSort(strings); 
    selectionSort(numbers); 

    //print output 
    for(int curr=0; curr < strings.size(); ++curr){ 
     cout << strings[curr] << " " << numbers[curr] << " "; 
    } 
    cout << "\n"; 

    return 0; 
} 

Должен сказать, что я не получаю вывод, как вы его написали.

Вход:

Story 31 of 45 TOM 11 and 90 

Выход:

and 11 of 31 story 45 tom 90 

Во всяком случае, я надеюсь, что даже если это не точно, что вы просили это дает вам некоторое представление о том, как решить вашу проблему ,

+0

Я на самом деле имею ввиду, что код должен быть в состоянии принять пропуск no: означает, если я вхожу в 3, тогда он должен показать вывод 3-х прохода в select sort.not отсортированный по размерам массив. –

+0

@BhaveshBarskar Ok. И мое решение не поможет вам понять, как это сделать? Я имею в виду, что могу добавить это, если хочешь. Но попытались ли вы принять это решение и немного его изменить? Следует добавить, что ... – dingalapadum