根据数组中数字出现频率排序
来源:互联网 发布:python主函数 编辑:程序博客网 时间:2024/06/06 07:26
不知道是那个面试题目,题目大概意思就是数组中不多于10个一位的数字(0--9),根据数字出现的频率从大到小排序,频率相同的按照数值大小排序,最后输出排序后的结果。
例如数组数据:arrayA[10]={1,1,2,3,4,4,6,7,7,7}; 根据频率排序后结果是:7 7 7 4 4 1 1 2 3 6; 再根据频率相同时按照数值大小排序,最后结果是: 7 7 7 4 4 1 1 6 3 2.
分析:
将数字的频率存进一个数组arrayB中,数组arrayB的下标是数组arrayA的数据,数组arrayB下标对应的值就是arrayA中对应数据的频率:
arrayB[ 10 ] = { 0 2 1 1 2 0 1 3 0 0 };
对应下标: 0 1 2 3 4 5 6 7 8 9
同时将数组arrayB数据复制一份到数组arrayC中,作为保存以便后面对比。
arrayC[ 10 ] ={0 2 1 1 2 0 1 3 0 0 };
使用插入法排序可以使相同频率的数字保持相对大小的顺序不变。对数组arrayB数据(arrayA数据频率)进行排序结果是:0 0 0 01 1 1 2 2 3.
最后从数组arrayB中依次从后往前(即频率从高到低输出)取数,arrayC也依次从后往前取数(保证频率相同时数值大的先打印),两数比较,若相等则打印:数组arrayC的下标是数组arrayA中的数值,值是出现的频率,打印频率那么多个数值即可。打印完一个将该数组数值标记,避免重复打印。
代码:
#include "stdafx.h"#include <iostream>using namespace std;#include <ctime>void SortNum(int arrayA[], int length){int arrayB[10]={0};int arrayC[10]={0};//作为辅助的临时数组int i,j,k;for (i=0; i<length; i++)//数组B中保存的是数组A数字的出现频率{arrayB[arrayA[i]]++;}for (i=0; i<=9; i++)//将数组B中还未排序前的数据保存到数组C中,以便对照{arrayC[i]=arrayB[i];}int key;for (i=1; i<=9; i++)//插入排序{key=arrayB[i];j=i-1;while (j>=0 && key<arrayB[j]) {arrayB[j+1]=arrayB[j];j--;}arrayB[j+1]=key;}for (j=9; j>0 && arrayB[j]>0; j--){key=arrayB[j];for (i=9; i>0; i--){if (key==arrayC[i]){for (k=0; k<arrayC[i]; k++){cout<<i<<" ";//或者将要打印的数据存进数组中返回}arrayC[i]=-1;//表示已经打印过了,避免重复打印}}}}int _tmain(int argc, _TCHAR* argv[]){int length=10;int arrayA[10]={1,1,2,3,4,4,6,7,7,7};cout<<"排序前元素序列:"<<endl;for (int i=0; i<10; i++){cout<<arrayA[i]<<" ";}cout<<endl;cout<<"排序后元素序列:"<<endl;SortNum(arrayA,length);getchar();return 0;}
结果:
- 根据数组中数字出现频率排序
- 一个一维整形数组,若干个数字,统计数组中不同的数字出现的次数,并按照出现频率从小到大排序输出,相同频率按数字大小排序输出
- 【数组8】数字在排序数组中出现的次数
- 【数组4】数字在排序数组中出现的次数
- 数组9:数字在排序数组中出现的次数
- 数字在排序数组中出现的次数(数组)
- 在排序数组中,找出给定数字的出现次数
- 在排序数组中,找出给定数字的出现次数
- 在排序数组中,找出给定数字的出现次数
- 统计一个数字在排序数组中出现的次数
- 算法:已排序数组中找出现最多的数字
- 数字在排序数组中出现的次数
- 数字在排序数组中出现的次数
- 在排序数组中,找出给定数字的出现次数
- 在排序数组中,找出给定数字出现的次数
- 数字在排序数组中出现的次数
- 数字在排序数组中出现的次数
- 数字在排序数组中出现的次数
- UBI Volume Table
- switch语句初探
- 今天去拔牙了
- struts2初学心得(对初步认识了解有帮助)
- 情人的伤感抑郁QQ心情日志分享:我就这样简单的喜欢你
- 根据数组中数字出现频率排序
- brut.androlib.err.UndefinedResObject(完美解决)apktool反编译问题
- 在vSphere上通过BOSH工具大规模部署Cloud Foundry (1) - IaaS准备
- criteria 概述
- 花花公子推荐伤感qq日志:乖不哭,我拜你
- poj2299 Ultra-QuickSort
- T-Sql查询小计总结
- Linux 忘记登陆密码怎么办?
- 小米2013校园招聘笔试题_JAVA版本