Алгоритмы

Самый быстрый способ сортировки |O(n)

Часто задаваемый вопрос на собеседовании

Некоторые алгоритмы могут сортировать за время O(n²), например, пузырьковая сортировка, сортировка вставками, а затем есть алгоритмы, такие как сортировка слиянием, которые могут выполнять это за время O(nlog(n)). Эти алгоритмы работают лучше всего, когда нет ограничений на символы/целые числа. Но когда мы сортируем строку, скажем, строчных букв, часто бывает, что символы могут быть только между az. Мы можем отсортировать такую ​​последовательность за время O(n). Мы увидим, как…

Сначала мы определяем массив размером 26 и инициализируем его 0

int count[26] = {0};

После этого мы обходим строку один раз и увеличиваем количество символов соответствующего индекса в массиве count.

for(char c : str){
      count[c - 'a']++;
}

Наконец, мы перемещаемся по массиву count и создаем отсортированную строку, добавляя i-й символ count[i] раз.

str = "";
for(int i=0;i<26;++i){
     for(int j=0;j<count[i];++j){
           str.push_back(i+'a');
      }
}

Окончательный код

#include <iostream>
using namespace std;
int main()
{
   string str = "manas";
   int count[26] = {0};
   for(char c : str){
      count[c - 'a']++;
}
str = "";
for(int i=0;i<26;++i){
     for(int j=0;j<count[i];++j){
           str.push_back(i+'a');
      }
}
cout<<str;
   
   return 0;
}
OUTPUT : aamns

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

Подпишитесь на нас в facebook , instagram и посетите наш веб-сайт.