最近由于“闲书”读太多,不少朋友以为我要转当产品经理了,故想起来把最近读的《编程珠玑》以及自己编写的代码整理成博客,用代码证明自己的清白。虽然自己比较菜不能和Google和ACM金牌大佬PK技术,作为一只老年菜鸡ACMer,经常一顿操作猛如虎,一看战绩0AC。
但相信对于刚入门的小伙伴来说,我的代码也许能帮上忙哈哈,同时作为一只纯种家养菜鸡却经常被各路大佬轮番吊打的我,也会结合《编程珠玑》提到的心理障碍简单谈一谈自己的看法。
当你被诬陷要转行的时候,跳进黄河也洗不清,但用代码可以。 ----- 某大厂资(meng)深(xin)算法工程师(其实就是我)。
好啦言归正传(突然一脸严肃的丢出问题):
给一个数字N(0 <= N <= 10000000),以及最多N个不重复数字X(1 <= X <= N),将他们排序并输出。
要求时间复杂度O(N),Memory Limited:1MB。
好啦,你都搜博客了,说明你需要代码(解析在代码中):
#include <iostream>
#include <cstdlib>
using namespace std;
const int SIZEINT = 32;
const int MASK = 0x1f;
const int MAXINT = 10000000;
const int SHIFT = 5;
int numArray[MAXINT + 10];//要排序的数字
int sortArray[MAXINT / SIZEINT + 10];//排序后的数组
int setBit(int array[], int num, int nSize);//设