一道题?
晚上hxd发来一道pcr的题

由于pcr玩的少,又没用过尤加利,在确认了尤加利的机制后,正好刚放假有点时间
讨论了一晚上,又用四个选项的算法都测试了一下
先假设每个角色的tp值为10点,满足都相等的条件1-5号列出
建立一个二维数组
arr[][0]:tp值
arr[][1]:位置
分别从小到大用四种排序算法排序
output输出
代码:
#include <iostream>
using namespace std;
int a[5][2] = {{10, 1}, {10, 2}, {10, 3}, {10, 4}, {10, 5}};
//假设1-5号 tp值均为10
void Quick_Sort(int arr[][2], int l, int r) {
if (r - l > 0) {
int i = l;
int j = r;
int p = arr[l][0];
int q = arr[l][1];
while (i < j) {
while (i < j && arr[j][0] >= p)
j--;
swap(arr[i], arr[j]);
while (i < j && arr[i][0] < p)
i++;
swap(arr[i], arr[j]);
}
Quick_Sort(arr, l, i - 1);
Quick_Sort(arr, i + 1, r);
}
}
void Bubble_Sort(int arr[][2]) {
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5 - i - 1; j++) {
if (arr[j][0] > arr[j + 1][0]) {
swap(arr[j], arr[j + 1]);
}
}
}
}
void merge(int List[][2], int low, int mid, int high) {
int i = low;
int j = mid + 1;
int temp[10][2] = {0};
int k = 0;
while (i <= mid && j <= high) {
if (List[i][0] <= List[j][0]) {
temp[k][0] = List[i][0];
temp[k++][1] = List[i++][1];
} else {
temp[k][0] = List[j][0];
temp[k++][1] = List[j++][1];
}
}
while (i <= mid) {
temp[k][0] = List[i][0];
temp[k++][1] = List[i++][1];
}
while (j <= high) {
temp[k][0] = List[j][0];
temp[k++][1] = List[j++][1];
}
for (i = low, k = 0; i <= high; i++, k++) {
List[i][0] = temp[k][0];
List[i][1] = temp[k][1];
}
}
void Merge_Sort(int List[][2], int low, int high) {
int mid = (low + high) / 2;
if (low < high) {
Merge_Sort(List, low, mid);
Merge_Sort(List, mid + 1, high);
merge(List, low, mid, high);
}
}
void Insert_Sort(int arr[][2], int N) {
for (int i = 1; i < N; i++) {
int j;
int temp = arr[i][0];
int temp2 = arr[i][1];
for (j = i; j > 0 && temp < arr[j - 1][0]; j--) {
arr[j][0] = arr[j - 1][0];
arr[j][1] = arr[j - 1][1];
}
arr[j][0] = temp;
arr[j][1] = temp2;
}
}
void output() {
for (int i = 0; i < 5; i++) {
printf("%-5d", a[i][1]);
}
cout << endl;
for (int i = 0; i < 5; i++) {
printf("%-5d", a[i][0]);
}
cout << endl;
}
int main() {
Quick_Sort(a, 0, 4);
cout << "quick:" << endl;
output();
Bubble_Sort(a);
cout << "bubble:" << endl;
output();
Merge_Sort(a, 0, 4);
cout << "merge:" << endl;
output();
Insert_Sort(a, 5);
cout << "insert:" << endl;
output();
}
每项排序都分别注释后测试
然而结果都是:
1 2 3 4 5

所以这道题答案在选项中与否尚不明确
不过也因此复习了一晚上的排序算法(草

浙公网安备 33010602011771号