имеется массив к примеру: {0,1,1,5,7,4,4,2,1}
с помощью какого алгоритма можно отсортировать так чтобы на выходе узнать каких элементов,какое количество,т.е :
0-1
1-3
5-1
7-1
4-2
?
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]]++; } }
Отсортируй пузырем, а затем по упорядоченному массиву пройди один раз выполняя на каждом шаге действия:
- если тек элемент = предыдущем элементу - увеличть счетчик
- иначе вывести предыдущий элемент, счетчик будет = кол-ву элементов в массиве. Обнулить счетчик
Nikopol
Ему надо еще сорт, по всей видимости
NIXIUS
> Ему надо еще сорт, по всей видимости
ну дык в мапе ключи же отсортированы
Nikopol
А, забыл. Тогда ок
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;
Низачод
Тема в архиве.