ПрограммированиеФорумОбщее

алгоритм сортировки

#0
3:00, 21 июля 2011

имеется массив к примеру: {0,1,1,5,7,4,4,2,1}
с помощью какого алгоритма можно отсортировать так чтобы на выходе узнать  каких элементов,какое количество,т.е :
0-1
1-3
5-1
7-1
4-2
?

#1
4:10, 21 июля 2011
      int pSequence[] = {0,1,1,5,7,4,4,2,1};
      std::map<int, int> Count;
      for( size_t i=0; i<(sizeof(pSequence)/sizeof(int)); ++i ) {
        if(Count.find(pSequence[i]) == Count.end()) {
          Count[pSequence[i]] = 1;
        } else {
          Count[pSequence[i]]++;
        }
      }
#2
4:11, 21 июля 2011

Отсортируй пузырем, а затем по упорядоченному массиву пройди один раз выполняя на каждом шаге действия:
- если тек элемент = предыдущем элементу - увеличть счетчик
- иначе вывести предыдущий элемент, счетчик будет = кол-ву элементов в массиве. Обнулить счетчик

#3
4:12, 21 июля 2011

Nikopol
Ему надо еще сорт, по всей видимости

#4
4:20, 21 июля 2011

NIXIUS
> Ему надо еще сорт, по всей видимости

ну дык в мапе ключи же отсортированы

#5
4:23, 21 июля 2011

Nikopol
А, забыл. Тогда ок

#6
5:38, 21 июля 2011
min = max = array[0];
for(int n = 0; n < sz_array; n++){
  if(min > array[n]) min = array[n];
  if(max < array[n]) max = array[n];
}

int* temp_array = new int[max - min];

memset(temp_array, 0, sizeof(int) * (max - min));
for(int n = 0; < sz_array; n++)
  temp_array[array[n] - min]++;

for(int n = 0; < (max - min); n++)
  if(temp_array[n]) std::cout<<n + min<<" - "<< temp_array[n]<<std::endl;

delete[] temp_array;
#7
13:23, 21 июля 2011

Низачод

#8
16:36, 21 июля 2011

http://ru.wikipedia.org/wiki/%D0%A1%D0%BE%D1%80%D1%82%D0%B8%D1%80… 2%D0%BE%D0%BC

ПрограммированиеФорумОбщее

Тема в архиве.