位图排序
2016-01-19 22:19
148 查看
在《编程珠玑》上看到的,开篇第一个问题,有很多数,小于一个MAXNUM,没有重复的,怎么排序最快。
答案是位图排序. 如果某一位不为0,那么这一位存代表一个数,位数(在序列中的位置)代表这个数。
比方说这些数都存在数组a,然后利用一个数组b,b初始状态各位都为0,然后读取a,如果a[1]=2,那么b[2]为1,a[3]=6,那么b[6]=1。
实现如下:
答案是位图排序. 如果某一位不为0,那么这一位存代表一个数,位数(在序列中的位置)代表这个数。
比方说这些数都存在数组a,然后利用一个数组b,b初始状态各位都为0,然后读取a,如果a[1]=2,那么b[2]为1,a[3]=6,那么b[6]=1。
实现如下:
#include <iostream> #include <fstream> #include<stdlib.h> #include<vector> #define MAXNUM 200 int Isood(int n); using namespace std; int main(void) { vector<int> v1,v2; int n; cin>>n; int m; m=MAXNUM; while(n) { int t; cin>>t; v1.push_back(t); n--; } while(m) { v2.push_back(0); m--; } for(int i=0;i<v1.size();i++) { v2[v1[i]-1]=1; } for(int i=0;i<v2.size();i++) { if(v2[i]) { cout<<i+1;+ } } }
相关文章推荐
- sortStringText
- bloc简介
- 笔记:《高效能人士的七个习惯》第九章 习惯六 统合综效——创造性合作的原则
- 【NYOJ】[33]蛇形填数
- 0919学习笔记
- 面试经历---UC(2016年01月11日下午面试)
- Python定制容器
- Android开发之View动画效果插补器Interpolator
- Java 开源软件测试工具
- TFTP笔记
- 千峰Android_Day03
- 阻塞-非阻塞-同步-异步
- 初学JSP和servlet
- 简单的预测
- iOS (布局机制)layout机制相关方法
- LeetCode_27.Remove Element_数组去元素
- 【cocos2d-x 2.x 学习与应用总结】10: cocos2d-x自带的shader及其使用
- 轻松玩转Github
- hdu 1034 Candy Sharing Game
- Spring的容器配置文件问题