首页
题库
面试
求职
学习
竞赛
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收藏
11799浏览
热门推荐
相关试题
用 js、html、css实现一...
人人网
2011
Javascript
前端工程师
评论
(6)
来自
人人网2011前端工程师笔试卷
实现 input 输入框的自动匹配。
人人网
2011
Javascript
前端工程师
评论
(11)
来自
人人网2011前端工程师笔试卷
用代码实现在页面的固定区域内实现图...
人人网
2011
Javascript
前端工程师
评论
(17)
来自
人人网2011前端工程师笔试卷
crontab文件由6个域组成,每...
人人网
Linux
Linux
评论
(16)
来自
人人网2015研发笔试卷B
在Vue组件销毁时,关于清除定时器...
Vue
评论
(1)
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题