использования подсчета sort.see here Для размещения символов на основе частоты просто использовать 2d массив Array [255] [2].
Имейте массив размеров в зависимости от диапазона символов, который у вас есть. Например, если у вас есть весь диапазон символов, у вас есть array[255]
и просто продолжайте увеличивать каждый раз, когда считывается значение. Если у вас есть алфавит, у вас есть array[26]
.
Тогда просто сортировать ваш массив [] [] на основе первого индекса с использованием qsort
#include<stdio.h>
#include<stdlib.h>
int intcmp(const void *a,const void *b){
int *A = (int*)a;
int *B = (int*)b;
if(A[0]>B[0])
return -1;
if(A[0]<B[0])
return 1;
if(A[0]==B[0])
return 0;
}
int main()
{
char st[100];
int ar[26][2]={0},size=0,i;
scanf("%s",&st);
for(i=0;st[i]!='\0';i++)
{
ar[st[i]-97][1]=st[i];
ar[st[i]-97][0]++;
}
qsort(ar,26,sizeof(int)*2,intcmp);
for(i=0;i<26;i++)
{
while(ar[i][0]--)
printf("%c",ar[i][1]);
}
return 0;
}
Пожалуйста, измените вопрос так, что это имеет смысл и может быть прочитан. Эти предложения не имеют никакого смысла: «Кроме того, дубликаты печати не должны содержать каждую букву отдельно, а просто последовательность букв. Наиболее часто встречающаяся буква должна быть помещена перед последовательностью». – jaybers
Что ты спрашиваешь? –
Например, Слово "barracuda" -> "aaarrbcud" – Dom