Loading docs/basic/tournament-sort.md +38 −37 Original line number Diff line number Diff line Loading @@ -17,7 +17,6 @@ ## 代码实现 ```cpp int n, a[maxn], tmp[maxn << 1]; int winner(int pos1, int pos2) { Loading @@ -28,12 +27,13 @@ int winner(int pos1, int pos2) { } void creat_tree(int &value) { for (int i = 0; i < n; i ++ ) tmp[n + i] = a[i]; for (int i = 0; i < n; i++) tmp[n + i] = a[i]; for (int i = 2 * n - 1; i > 1; i -= 2) { int j, k = i / 2; if (i % 2 == 0 && i < 2 * n - 1) j = i + 1; else if (i > 1) j = i - 1; if (i % 2 == 0 && i < 2 * n - 1) j = i + 1; else if (i > 1) j = i - 1; tmp[k] = winner(i, j); } value = tmp[tmp[1]]; Loading @@ -42,11 +42,12 @@ void creat_tree(int &value) { void recreat(int &value) { int i = tmp[1]; while (i > 1) { while (i > 1) { int j, k = i / 2; if (i % 2 == 0 && i < 2 * n - 1) j = i + 1; else if (i > 1) j = i - 1; if (i % 2 == 0 && i < 2 * n - 1) j = i + 1; else if (i > 1) j = i - 1; tmp[k] = winner(i, j); i = k; } Loading Loading
docs/basic/tournament-sort.md +38 −37 Original line number Diff line number Diff line Loading @@ -17,7 +17,6 @@ ## 代码实现 ```cpp int n, a[maxn], tmp[maxn << 1]; int winner(int pos1, int pos2) { Loading @@ -28,12 +27,13 @@ int winner(int pos1, int pos2) { } void creat_tree(int &value) { for (int i = 0; i < n; i ++ ) tmp[n + i] = a[i]; for (int i = 0; i < n; i++) tmp[n + i] = a[i]; for (int i = 2 * n - 1; i > 1; i -= 2) { int j, k = i / 2; if (i % 2 == 0 && i < 2 * n - 1) j = i + 1; else if (i > 1) j = i - 1; if (i % 2 == 0 && i < 2 * n - 1) j = i + 1; else if (i > 1) j = i - 1; tmp[k] = winner(i, j); } value = tmp[tmp[1]]; Loading @@ -42,11 +42,12 @@ void creat_tree(int &value) { void recreat(int &value) { int i = tmp[1]; while (i > 1) { while (i > 1) { int j, k = i / 2; if (i % 2 == 0 && i < 2 * n - 1) j = i + 1; else if (i > 1) j = i - 1; if (i % 2 == 0 && i < 2 * n - 1) j = i + 1; else if (i > 1) j = i - 1; tmp[k] = winner(i, j); i = k; } Loading