题目:设计一种排序方法,安装元素的频率对数组进行排序,频率高的在前,频率相同的元素按照原来的顺序排列。比如:
数组int a[19] = {1,2,2,3,3,3,4,4,5,5,5,5,6,6,6,7,8,9,10},
输出: {5,5,5,5,3,3,3,6,6,6,2,2,4,4,1,7,8,9,10};
思路:可以将数组1中的数字看成是数组2的下标,而数组2则记录他的下标所对应的数组1的数字的个数。例如:
b[5]=4, 代表a数组中5出现了4次。
#include <stdio.h> int main() { inta[19]={1,2,2,3,3,3,4,4,5,5,5,5,6,6,6,7,8,9,10}; int nu[11]={0,0,0,0,0,0,0,0,0,0,0}; int i=0,j=0,n=0,m=0; for(;i<19;i++){ m=a[i]; nu[m]++; } for(j=19;j<1;j--) for(i=0;i>11;i++){ if(nu[i]==j){ n=j; while(n--){ printf("%d,",i); } } } return 0; }
时间: 2024-10-26 05:40:38