首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

数组元素排序,依照个数的多少

2013-07-27 
数组元素排序,按照个数的多少譬如:当前的数组中的元素是3 6 7 6 6 5 5 7 6无序的排序后是66 6 6 7 7 5 5 3

数组元素排序,按照个数的多少
譬如:当前的数组中的元素是    3 6 7 6 6 5 5 7 6  无序的
                  排序后是     6  6 6 6 7 7 5 5 3
就是按照元素个数的多少来排序,帮帮忙,各位!
实在想不出比较合理的办法了
[解决办法]
1.用一个map<int elem,int num>,前面一个值为元素值,后一个值为元素出现的个数。
2.遍历整个数组,每次遇到map里面key没有的就插入一个新key,如果有就把num加上1
3.遍历map,取num从大到小的值,然后存在另一个排好序的map里
4.然后根据排好的map的num输出elem

好像麻烦了点,新手见谅啊~~
[解决办法]
我觉得那个方法不错啊,也是最好想的。
我也想了一种,好像也挺麻烦的,lz看一下
先将数组按从大到小排序一下
建立结构体
struct element{
            struct element * last; 
            int value;
            int num;
            struct element * next;
            }
然后取第一个数,在数组中找相同的个数,num++;
只要遇到不等的就停止。
插入到头指针的后面;
然后按num的个数跳转到下一个数,算出num的值看,然后和之前的节点判断插入在那里。
接着重复以上操作,利用链表的链接直接排序即可。
然后在按头指针输出即可。
就是利用链表来做。


[解决办法]
最简单的方法
将每一个数字存入数组,将总数存入变量sum;
利用冒泡排序将所有的元素排一遍;
接着从排好的元素中遍历一遍,同时声明N个标记值利用循环语句查找相同的元素,n1用来记录与元素1相同的元素个数,依此类推
打印的时候按n的大小循环打印.

热点排行