第一个是那个求小于n的所有素数最简单的算法:
第二个是完美洗牌的算法,输入 ,如何用 的时间, 的空间,将这个序列顺序改为 。
bool* prime(int n) {要想做一些优化的话,可以把外循环控制到sqrt(n)。
bool *p = new bool[n];
memset(p, 0, sizeof p);
for (int i = 2; i < n; i++) {
if (!p[i]) {
for (int j = 2*i; j < n; j+=i) {
p[j] = true;
}
}
}
return p;
}
第二个是完美洗牌的算法,输入 ,如何用 的时间, 的空间,将这个序列顺序改为 。
mergeSort(x[1...2n]); // if this function solve Merge Sort problem
perfectShuffle(x[1...2n]) { // then this solve Perfect Shuffle problem
m = max(x[1...2n])+1;
x[i] = x[i]+(2i-1)m;
x[i+n] = x[i+n] + 2im;
mergeSort(x[1...2n]);
x[i] = x[i]%m;
}