首页
题库
面试
求职
学习
竞赛
More+
所有博客
搜索面经/职位/试题/公司
搜索
我要招人
去企业版
登录 / 注册
首页
>
试题广场
>
对一个unsigned int32型数组a进行排序,记ni为
[问答题]
对一个unsigned int32型数组a进行排序,记ni为a[i]的二进制表示中"1"的数量,指定排序策略如下:
a) 如果ni < nj,则a[i]排在a[j]前面
b) 如果ni == nj,按值从小到大排序
添加笔记
求解答(0)
邀请回答
收藏(13)
分享
纠错
2个回答
添加回答
1
若水/爆米花
# include <string.h>
#include <stdio.h>
#include <iostream>
#include <stdlib.h>
int fun1(int x)
{
int count = 0;
while(x)
{
count++;
x=x&(x-1);
}
return count;
}
void swap(int *i,int *j)
{
*i = *i^*j;
*j = *i^*j;
*i = *i^*j;
}
int main()
{
int n =5;
int a[n];
int x;
int count1,count2;
for (int i = 0; i < n; ++i)
{
printf("please input the number:\n");
std::cin>>x;
a[i] = x;
}
for (int i = 1; i < n; ++i)
{
for (int j = n-1; j >=i; --j)
{
count1 = fun1(a[j]);
count2 = fun1(a[j-1]);
if(count1 == count2)
{
if(a[j]<a[j-1]) swap(&a[j],&a[j-1]);
else continue;
}
else if(count1 < count2) swap(&a[j],&a[j-1]);
else continue;
}
for (int i = 0; i < n; ++i)
{
std::cout<<a[i]<<" ";
}
printf("\n");
}
}
发表于 2015-06-23 21:08:52
回复(0)
0
小小
是让重新排序嘛。。
发表于 2014-11-24 14:56:17
回复(2)
这道题你会答吗?花几分钟告诉大家答案吧!
提交观点
问题信息
数组
人人网
排序
来自:
人人网2015研发笔试卷B
上传者:
douyaxiaosheng
难度:
2条回答
13收藏
11299浏览
热门推荐
相关试题
用代码实现在页面的固定区域内实现图...
人人网
2011
Javascript
前端工程师
评论
(17)
来自
人人网2011前端工程师笔试卷
实现 input 输入框的自动匹配。
人人网
2011
Javascript
前端工程师
评论
(11)
来自
人人网2011前端工程师笔试卷
在下列表述中,错误的是()
字符串
树
排序
评论
(43)
给定一个包含大小写字母,数字,运算...
人人网
字符串
评论
(11)
来自
人人网2015研发笔试卷B
在C语言的结构化程序设计中,()是...
C++
评论
(1)
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题