我实在想不通,这明明10ms以内就能完成的啊?
#include <iostream>
#include <ctime>
using namespace std;
int randInt(int l, int r) {
srand(time(0));
return rand() % (r - l + 1) + l;//从l...r之间任取一个数
}
bool check(int index, int arr[], int target) {
for (int i = 0; i < index; ++i) {
if (target == arr[i]) {
return true;
}
}
return false;
}
void algorithm1(int arr[], int size, int rangeLeft, int rangeRight) {
int random;
for (int i = 0; i < size; ++i) {
random = randInt(rangeLeft, rangeRight);
while (check(i, arr, random)) {
random = randInt(rangeLeft, rangeRight);
}
arr[i] = random;
}
}
void algorithm2(int arr[], int size, int rangeLeft, int rangeRight) {
bool *used = new bool[rangeRight + 1];
for (int i = 0; i < rangeRight + 1; ++i) {
used[i] = false;
}
int random;
for (int j = 0; j < size; ++j) {
random = randInt(rangeLeft, rangeRight);
while (used[random]) {
random = randInt(rangeLeft, rangeRight);
}
used[random] = true;
arr[j] = random;
}
delete[]used;
}
void algorithm3(int arr[], int size) {
for (int j = 0; j < size; ++j) {
arr[j] = j + 1;
}
for (int i = 0; i < size; ++i) {
swap(arr[i], arr[randInt(0, i)]);
}
}
int main() {
int arr[10] = {0};
algorithm1(arr, 10, 1, 10);
//algorithm3(arr, 10);
for (int i = 0; i < 10; ++i) {
cout << arr[i] << endl;
}
}