社区讨论

60

P1177【模板】排序参与者 5已保存回复 7

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
7 条
当前快照
1 份
快照标识符
@m03xez8h
此快照首次捕获于
2024/08/21 22:05
2 年前
此快照最后确认于
2025/11/04 22:48
4 个月前
查看原帖
最高得分:60最高得分:60
ScoreSource CodeOther Informations
00code[0]No score
2020code[1]code[1]22~55 TLE
4040code[2]code[2]Last 33 are MLE/323323 ++- 1.5ms1.5ms
6060code[3]code[3]Used rand. MLE chance has been reduced.
CodeCode JSONJSON
Code: [
CPP
#include <iostream>
using namespace std;
int getMin(int a[], int len) {
	int min = 2147483647;
	for (int i = 0; i < len; i++) {
		if ((min > a[i]) && (a[i] != -2147483648)) {
			min = i;
		}
	}
	return min;
}
int main() {
	int n;
	cin >> n;
	int a[n],b[n];
	for (int i = 0; i < n; i++) {
		cin >> a[i];
		b[i] = 0;
	}
	int cnt = 0;
	for (int i = 0; i < n; i++) {
		int min = getMin(a, n);
		b[cnt] = a[min];
		a[min] = -2147483648;
		cnt++;
		break;
	}
	for (int i = 0; i < n; i++) {
		cout << b[i] << ' ';
	}
	return 0;
}
,
CPP
#include <iostream>
using namespace std;
int getMin_index(int a[], int len, int start) {
	int min_index = start;
	for (int i = start + 1; i < len; i++) {
		if (a[min_index] > a[i]) {
			min_index = i;
		}
	}
	return min_index;
}

int main() {
	int n;
	cin >> n;
	int a[n];
	for (int i = 0; i < n; i++) {
		cin >> a[i];
	}
	for (int i = 0; i < n - 1; i++) {
		int min_index = getMin_index(a, n, i);
		int temp = a[min_index];
		a[min_index] = a[i];
		a[i] = temp;
	}
	for (int i = 0; i < n; i++) {
		cout << a[i] << ' ';
	}
	return 0;
}
,
CPP
#include <iostream>
#include <queue>

using namespace std;

//Ascend
void quicksort(int a[], int len) {
	if (len == 0 || len == 1) return;
	int mid = a[0];
	queue <int> q1;
	queue <int> q2;
	for (int i = 1; i < len; i++) {
		if (a[i] < mid) q1.push(a[i]);
		else q2.push(a[i]);
	}
	int len1 = q1.size();
	int len2 = q2.size();
	int l[len1], r[len2];
	for (int i = 0; i < len1; i++) {
		l[i] = q1.front();
		q1.pop();
	}
	for (int i = 0; i < len2; i++) {
		r[i] = q2.front();
		q2.pop();
	}
	quicksort(l, len1);
	quicksort(r, len2);
	int i = 0;
	for (; i < len1; i++) {
		a[i] = l[i];
	}
	a[i] = mid;
	i++;
	for (int j = 0; i < len; i++, j++) {
		a[i] = r[j];
	}
}

int main() {
	int n;
	cin >> n;
	int a[n];
	for (int i = 0; i < n; i++) cin >> a[i];
	quicksort(a, n);
	for (int i = 0; i < n; i++) {
		cout << a[i] << ' ';
	}
	return 0;
}
,
CPP
#include <iostream>
#include <queue>
#include <cstdlib>
#include <ctime>

using namespace std;

//Ascend
void quicksort(int a[], int len) {
	if (len == 0 || len == 1) return;
	srand(time(0));
	int pos = rand() % len;
	int mid = a[pos];
	queue <int> q1;
	queue <int> q2;
	for (int i = 0; i < len; i++) {
	    if (i == pos) continue;
		if (a[i] < mid) q1.push(a[i]);
		else q2.push(a[i]);
	}
	int len1 = q1.size();
	int len2 = q2.size();
	int l[len1], r[len2];
	for (int i = 0; i < len1; i++) {
		l[i] = q1.front();
		q1.pop();
	}
	for (int i = 0; i < len2; i++) {
		r[i] = q2.front();
		q2.pop();
	}
	quicksort(l, len1);
	quicksort(r, len2);
	int i = 0;
	for (; i < len1; i++) {
		a[i] = l[i];
	}
	a[i] = mid;
	i++;
	for (int j = 0; i < len; i++, j++) {
		a[i] = r[j];
	}
}

int main() {
	int n;
	cin >> n;
	int a[n];
	for (int i = 0; i < n; i++) cin >> a[i];
	quicksort(a, n);
	for (int i = 0; i < n; i++) {
		cout << a[i] << ' ';
	}
	return 0;
}
]
randrand cancan onlyonly generategenerate numbernumber basedbased onon time,time, soso II useuse aa newnew generatorgenerator.
CPP
new generator. 40-score chance reduced.

#include <iostream>
#include <queue>
#include <cstdlib>
#include <ctime>

using namespace std;

long long new_rand() {
    srand(time(0));
    int x = rand();
    srand(time(0));
    int y = rand();
    return x * 32767 + y;
}

//Ascend
void quicksort(int a[], int len) {
	if (len == 0 || len == 1) return;
	srand(time(0));
	int pos = new_rand() % len;
	int mid = a[pos];
	queue <int> q1;
	queue <int> q2;
	for (int i = 0; i < len; i++) {
	    if (i == pos) continue;
		if (a[i] < mid) q1.push(a[i]);
		else q2.push(a[i]);
	}
	int len1 = q1.size();
	int len2 = q2.size();
	int l[len1], r[len2];
	for (int i = 0; i < len1; i++) {
		l[i] = q1.front();
		q1.pop();
	}
	for (int i = 0; i < len2; i++) {
		r[i] = q2.front();
		q2.pop();
	}
	quicksort(l, len1);
	quicksort(r, len2);
	int i = 0;
	for (; i < len1; i++) {
		a[i] = l[i];
	}
	a[i] = mid;
	i++;
	for (int j = 0; i < len; i++, j++) {
		a[i] = r[j];
	}
}

int main() {
	int n;
	cin >> n;
	int a[n];
	for (int i = 0; i < n; i++) cin >> a[i];
	quicksort(a, n);
	for (int i = 0; i < n; i++) {
		cout << a[i] << ' ';
	}
	return 0;
}
Please fix my code. QwQQwQ lol:)lol:)
trolltroll P:)P:)

回复

7 条回复,欢迎继续交流。

正在加载回复...