- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我找到了 this paper ,它描述了选择排序的优化版本,一般来说应该优于经典选择排序。在第 4 页上,该特定变体的伪代码描述如下:
k = 0
for i = n–1 to k
IndexOfLarge = IndexOfSmall = k
for j = k+1 to i
if (X[j] > X[IndexOfLarge])
IndexOfLarge = j
if (X[j] < X[IndexOfSmall])
IndexOfSmall = j
Large = X[IndexOfLarge]
Small = X[IndexOfSmall]
X[IndexOfLarge] = X[i]
X[IndexOfSmall] = X[k]
if (IndexOfLarge == k)
Temp = X[i]
X[i] = Large
X[IndexOfSmall] = Temp
Else
X[i] = Large
if (IndexOfSmall == i)
Temp = X[k]
X[k] = Small
X[IndexOfLarge] = Temp
Else
X[k] = Small
k = k+1
将其翻译成 C 语言相当容易:
#include "selectionsort.h"
void selectionsort(int *array, size_t num) {
int *x = array;
for(int i = num-1, k = 0; i > k; --i, ++k) {
int i_small = k;
int i_large = k;
for(int j = k+1; j <= i; ++j) {
if(x[j] > x[i_large]) {
i_large = j;
}
if(x[j] < x[i_small]) {
i_small = j;
}
}
int large = x[i_large];
int small = x[i_small];
x[i_large] = x[i];
x[i_small] = x[k];
int tmp;
if(i_large == k) {
tmp = x[i];
x[i] = large;
x[i_small] = tmp;
} else {
x[i] = large;
}
if(i_small == i) {
tmp = x[k];
x[k] = small;
x[i_large] = tmp;
} else {
x[k] = small;
}
}
事实证明,这个特定的实现并不总是对所有输入进行完全排序。例如,下面是一个包含 100 个随机整数的数组,范围从 0 到 100。如果针对每次迭代进行布局,那么在最后两行中,就在数组的中间,您将看到数字 52
只是被覆盖。
0 86 85 24 38 64 29 8 50 38 64 1 71 71 93 1 35 18 52 31 10 88 21 64 61 85 39 71 26 98 94 1 83 78 25 20 7 55 96 57 59 59 59 29 96 17 30 93 35 49 90 11 36 10 76 97 95 14 33 88 78 93 89 60 36 80 46 44 8 41 0 59 66 25 89 61 42 85 20 44 33 76 55 36 87 97 32 47 10 32 0 88 24 55 13 61 35 60 71 98
0 0 85 24 38 64 29 8 50 38 64 1 71 71 93 1 35 18 52 31 10 88 21 64 61 85 39 71 26 71 94 1 83 78 25 20 7 55 96 57 59 59 59 29 96 17 30 93 35 49 90 11 36 10 76 97 95 14 33 88 78 93 89 60 36 80 46 44 8 41 86 59 66 25 89 61 42 85 20 44 33 76 55 36 87 97 32 47 10 32 0 88 24 55 13 61 35 60 98 98
0 0 0 24 38 64 29 8 50 38 64 1 71 71 93 1 35 18 52 31 10 88 21 64 61 85 39 71 26 71 94 1 83 78 25 20 7 55 96 57 59 59 59 29 96 17 30 93 35 49 90 11 36 10 76 60 95 14 33 88 78 93 89 60 36 80 46 44 8 41 86 59 66 25 89 61 42 85 20 44 33 76 55 36 87 97 32 47 10 32 85 88 24 55 13 61 35 97 98 98
0 0 0 1 38 64 29 8 50 38 64 24 71 71 93 1 35 18 52 31 10 88 21 64 61 85 39 71 26 71 94 1 83 78 25 20 7 55 96 57 59 59 59 29 96 17 30 93 35 49 90 11 36 10 76 60 95 14 33 88 78 93 89 60 36 80 46 44 8 41 86 59 66 25 89 61 42 85 20 44 33 76 55 36 87 35 32 47 10 32 85 88 24 55 13 61 97 97 98 98
0 0 0 1 1 64 29 8 50 38 64 24 71 71 93 38 35 18 52 31 10 88 21 64 61 85 39 71 26 71 94 1 83 78 25 20 7 55 61 57 59 59 59 29 96 17 30 93 35 49 90 11 36 10 76 60 95 14 33 88 78 93 89 60 36 80 46 44 8 41 86 59 66 25 89 61 42 85 20 44 33 76 55 36 87 35 32 47 10 32 85 88 24 55 13 96 97 97 98 98
0 0 0 1 1 1 29 8 50 38 64 24 71 71 93 38 35 18 52 31 10 88 21 64 61 85 39 71 26 71 94 64 83 78 25 20 7 55 61 57 59 59 59 29 13 17 30 93 35 49 90 11 36 10 76 60 95 14 33 88 78 93 89 60 36 80 46 44 8 41 86 59 66 25 89 61 42 85 20 44 33 76 55 36 87 35 32 47 10 32 85 88 24 55 96 96 97 97 98 98
0 0 0 1 1 1 7 8 50 38 64 24 71 71 93 38 35 18 52 31 10 88 21 64 61 85 39 71 26 71 94 64 83 78 25 20 29 55 61 57 59 59 59 29 13 17 30 93 35 49 90 11 36 10 76 60 55 14 33 88 78 93 89 60 36 80 46 44 8 41 86 59 66 25 89 61 42 85 20 44 33 76 55 36 87 35 32 47 10 32 85 88 24 95 96 96 97 97 98 98
0 0 0 1 1 1 7 8 50 38 64 24 71 71 93 38 35 18 52 31 10 88 21 64 61 85 39 71 26 71 24 64 83 78 25 20 29 55 61 57 59 59 59 29 13 17 30 93 35 49 90 11 36 10 76 60 55 14 33 88 78 93 89 60 36 80 46 44 8 41 86 59 66 25 89 61 42 85 20 44 33 76 55 36 87 35 32 47 10 32 85 88 94 95 96 96 97 97 98 98
0 0 0 1 1 1 7 8 8 38 64 24 71 71 88 38 35 18 52 31 10 88 21 64 61 85 39 71 26 71 24 64 83 78 25 20 29 55 61 57 59 59 59 29 13 17 30 93 35 49 90 11 36 10 76 60 55 14 33 88 78 93 89 60 36 80 46 44 50 41 86 59 66 25 89 61 42 85 20 44 33 76 55 36 87 35 32 47 10 32 85 93 94 95 96 96 97 97 98 98
0 0 0 1 1 1 7 8 8 10 64 24 71 71 88 38 35 18 52 31 38 88 21 64 61 85 39 71 26 71 24 64 83 78 25 20 29 55 61 57 59 59 59 29 13 17 30 85 35 49 90 11 36 10 76 60 55 14 33 88 78 93 89 60 36 80 46 44 50 41 86 59 66 25 89 61 42 85 20 44 33 76 55 36 87 35 32 47 10 32 93 93 94 95 96 96 97 97 98 98
0 0 0 1 1 1 7 8 8 10 10 24 71 71 88 38 35 18 52 31 38 88 21 64 61 85 39 71 26 71 24 64 83 78 25 20 29 55 61 57 59 59 59 29 13 17 30 85 35 49 90 11 36 64 76 60 55 14 33 88 78 32 89 60 36 80 46 44 50 41 86 59 66 25 89 61 42 85 20 44 33 76 55 36 87 35 32 47 10 93 93 93 94 95 96 96 97 97 98 98
0 0 0 1 1 1 7 8 8 10 10 10 71 71 88 38 35 18 52 31 38 88 21 64 61 85 39 71 26 71 24 64 83 78 25 20 29 55 61 57 59 59 59 29 13 17 30 85 35 49 24 11 36 64 76 60 55 14 33 88 78 32 89 60 36 80 46 44 50 41 86 59 66 25 89 61 42 85 20 44 33 76 55 36 87 35 32 47 90 93 93 93 94 95 96 96 97 97 98 98
0 0 0 1 1 1 7 8 8 10 10 10 11 71 88 38 35 18 52 31 38 88 21 64 61 85 39 71 26 71 24 64 83 78 25 20 29 55 61 57 59 59 59 29 13 17 30 85 35 49 24 71 36 64 76 60 55 14 33 88 78 32 47 60 36 80 46 44 50 41 86 59 66 25 89 61 42 85 20 44 33 76 55 36 87 35 32 89 90 93 93 93 94 95 96 96 97 97 98 98
0 0 0 1 1 1 7 8 8 10 10 10 11 13 88 38 35 18 52 31 38 88 21 64 61 85 39 71 26 71 24 64 83 78 25 20 29 55 61 57 59 59 59 29 71 17 30 85 35 49 24 71 36 64 76 60 55 14 33 88 78 32 47 60 36 80 46 44 50 41 86 59 66 25 32 61 42 85 20 44 33 76 55 36 87 35 89 89 90 93 93 93 94 95 96 96 97 97 98 98
0 0 0 1 1 1 7 8 8 10 10 10 11 13 14 38 35 18 52 31 38 88 21 64 61 85 39 71 26 71 24 64 83 78 25 20 29 55 61 57 59 59 59 29 71 17 30 85 35 49 24 71 36 64 76 60 55 35 33 88 78 32 47 60 36 80 46 44 50 41 86 59 66 25 32 61 42 85 20 44 33 76 55 36 87 88 89 89 90 93 93 93 94 95 96 96 97 97 98 98
0 0 0 1 1 1 7 8 8 10 10 10 11 13 14 17 35 18 52 31 38 87 21 64 61 85 39 71 26 71 24 64 83 78 25 20 29 55 61 57 59 59 59 29 71 38 30 85 35 49 24 71 36 64 76 60 55 35 33 88 78 32 47 60 36 80 46 44 50 41 86 59 66 25 32 61 42 85 20 44 33 76 55 36 88 88 89 89 90 93 93 93 94 95 96 96 97 97 98 98
0 0 0 1 1 1 7 8 8 10 10 10 11 13 14 17 18 35 52 31 38 87 21 64 61 85 39 71 26 71 24 64 83 78 25 20 29 55 61 57 59 59 59 29 71 38 30 85 35 49 24 71 36 64 76 60 55 35 33 36 78 32 47 60 36 80 46 44 50 41 86 59 66 25 32 61 42 85 20 44 33 76 55 88 88 88 89 89 90 93 93 93 94 95 96 96 97 97 98 98
0 0 0 1 1 1 7 8 8 10 10 10 11 13 14 17 18 20 52 31 38 55 21 64 61 85 39 71 26 71 24 64 83 78 25 35 29 55 61 57 59 59 59 29 71 38 30 85 35 49 24 71 36 64 76 60 55 35 33 36 78 32 47 60 36 80 46 44 50 41 86 59 66 25 32 61 42 85 20 44 33 76 87 88 88 88 89 89 90 93 93 93 94 95 96 96 97 97 98 98
0 0 0 1 1 1 7 8 8 10 10 10 11 13 14 17 18 20 20 31 38 55 21 64 61 85 39 71 26 71 24 64 83 78 25 35 29 55 61 57 59 59 59 29 71 38 30 85 35 49 24 71 36 64 76 60 55 35 33 36 78 32 47 60 36 80 46 44 50 41 76 59 66 25 32 61 42 85 52 44 33 86 87 88 88 88 89 89 90 93 93 93 94 95 96 96 97 97 98 98
0 0 0 1 1 1 7 8 8 10 10 10 11 13 14 17 18 20 20 21 38 55 31 64 61 33 39 71 26 71 24 64 83 78 25 35 29 55 61 57 59 59 59 29 71 38 30 85 35 49 24 71 36 64 76 60 55 35 33 36 78 32 47 60 36 80 46 44 50 41 76 59 66 25 32 61 42 85 52 44 85 86 87 88 88 88 89 89 90 93 93 93 94 95 96 96 97 97 98 98
0 0 0 1 1 1 7 8 8 10 10 10 11 13 14 17 18 20 20 21 24 55 31 64 61 33 39 71 26 71 38 64 83 78 25 35 29 55 61 57 59 59 59 29 71 38 30 44 35 49 24 71 36 64 76 60 55 35 33 36 78 32 47 60 36 80 46 44 50 41 76 59 66 25 32 61 42 85 52 85 85 86 87 88 88 88 89 89 90 93 93 93 94 95 96 96 97 97 98 98
0 0 0 1 1 1 7 8 8 10 10 10 11 13 14 17 18 20 20 21 24 24 31 64 61 33 39 71 26 71 38 64 83 78 25 35 29 55 61 57 59 59 59 29 71 38 30 44 35 49 55 71 36 64 76 60 55 35 33 36 78 32 47 60 36 80 46 44 50 41 76 59 66 25 32 61 42 52 85 85 85 86 87 88 88 88 89 89 90 93 93 93 94 95 96 96 97 97 98 98
0 0 0 1 1 1 7 8 8 10 10 10 11 13 14 17 18 20 20 21 24 24 25 64 61 33 39 71 26 71 38 64 52 78 31 35 29 55 61 57 59 59 59 29 71 38 30 44 35 49 55 71 36 64 76 60 55 35 33 36 78 32 47 60 36 80 46 44 50 41 76 59 66 25 32 61 42 83 85 85 85 86 87 88 88 88 89 89 90 93 93 93 94 95 96 96 97 97 98 98
0 0 0 1 1 1 7 8 8 10 10 10 11 13 14 17 18 20 20 21 24 24 25 25 61 33 39 71 26 71 38 64 52 78 31 35 29 55 61 57 59 59 59 29 71 38 30 44 35 49 55 71 36 64 76 60 55 35 33 36 78 32 47 60 36 42 46 44 50 41 76 59 66 64 32 61 80 83 85 85 85 86 87 88 88 88 89 89 90 93 93 93 94 95 96 96 97 97 98 98
0 0 0 1 1 1 7 8 8 10 10 10 11 13 14 17 18 20 20 21 24 24 25 25 26 33 39 71 61 71 38 64 52 61 31 35 29 55 61 57 59 59 59 29 71 38 30 44 35 49 55 71 36 64 76 60 55 35 33 36 78 32 47 60 36 42 46 44 50 41 76 59 66 64 32 78 80 83 85 85 85 86 87 88 88 88 89 89 90 93 93 93 94 95 96 96 97 97 98 98
0 0 0 1 1 1 7 8 8 10 10 10 11 13 14 17 18 20 20 21 24 24 25 25 26 29 39 71 61 71 38 64 52 61 31 35 33 55 61 57 59 59 59 29 71 38 30 44 35 49 55 71 36 64 76 60 55 35 33 36 32 32 47 60 36 42 46 44 50 41 76 59 66 64 78 78 80 83 85 85 85 86 87 88 88 88 89 89 90 93 93 93 94 95 96 96 97 97 98 98
0 0 0 1 1 1 7 8 8 10 10 10 11 13 14 17 18 20 20 21 24 24 25 25 26 29 29 71 61 71 38 64 52 61 31 35 33 55 61 57 59 59 59 39 71 38 30 44 35 49 55 71 36 64 64 60 55 35 33 36 32 32 47 60 36 42 46 44 50 41 76 59 66 76 78 78 80 83 85 85 85 86 87 88 88 88 89 89 90 93 93 93 94 95 96 96 97 97 98 98
0 0 0 1 1 1 7 8 8 10 10 10 11 13 14 17 18 20 20 21 24 24 25 25 26 29 29 30 61 71 38 64 52 61 31 35 33 55 61 57 59 59 59 39 71 38 71 44 35 49 55 71 36 64 64 60 55 35 33 36 32 32 47 60 36 42 46 44 50 41 66 59 76 76 78 78 80 83 85 85 85 86 87 88 88 88 89 89 90 93 93 93 94 95 96 96 97 97 98 98
0 0 0 1 1 1 7 8 8 10 10 10 11 13 14 17 18 20 20 21 24 24 25 25 26 29 29 30 31 59 38 64 52 61 61 35 33 55 61 57 59 59 59 39 71 38 71 44 35 49 55 71 36 64 64 60 55 35 33 36 32 32 47 60 36 42 46 44 50 41 66 71 76 76 78 78 80 83 85 85 85 86 87 88 88 88 89 89 90 93 93 93 94 95 96 96 97 97 98 98
0 0 0 1 1 1 7 8 8 10 10 10 11 13 14 17 18 20 20 21 24 24 25 25 26 29 29 30 31 32 38 64 52 61 61 35 33 55 61 57 59 59 59 39 66 38 71 44 35 49 55 71 36 64 64 60 55 35 33 36 59 32 47 60 36 42 46 44 50 41 71 71 76 76 78 78 80 83 85 85 85 86 87 88 88 88 89 89 90 93 93 93 94 95 96 96 97 97 98 98
0 0 0 1 1 1 7 8 8 10 10 10 11 13 14 17 18 20 20 21 24 24 25 25 26 29 29 30 31 32 32 64 52 61 61 35 33 55 61 57 59 59 59 39 66 38 41 44 35 49 55 71 36 64 64 60 55 35 33 36 59 38 47 60 36 42 46 44 50 71 71 71 76 76 78 78 80 83 85 85 85 86 87 88 88 88 89 89 90 93 93 93 94 95 96 96 97 97 98 98
0 0 0 1 1 1 7 8 8 10 10 10 11 13 14 17 18 20 20 21 24 24 25 25 26 29 29 30 31 32 32 33 52 61 61 35 64 55 61 57 59 59 59 39 66 38 41 44 35 49 55 50 36 64 64 60 55 35 33 36 59 38 47 60 36 42 46 44 71 71 71 71 76 76 78 78 80 83 85 85 85 86 87 88 88 88 89 89 90 93 93 93 94 95 96 96 97 97 98 98
0 0 0 1 1 1 7 8 8 10 10 10 11 13 14 17 18 20 20 21 24 24 25 25 26 29 29 30 31 32 32 33 33 61 61 35 64 55 61 57 59 59 59 39 44 38 41 44 35 49 55 50 36 64 64 60 55 35 52 36 59 38 47 60 36 42 46 66 71 71 71 71 76 76 78 78 80 83 85 85 85 86 87 88 88 88 89 89 90 93 93 93 94 95 96 96 97 97 98 98
0 0 0 1 1 1 7 8 8 10 10 10 11 13 14 17 18 20 20 21 24 24 25 25 26 29 29 30 31 32 32 33 33 35 61 61 46 55 61 57 59 59 59 39 44 38 41 44 35 49 55 50 36 64 64 60 55 35 52 36 59 38 47 60 36 42 64 66 71 71 71 71 76 76 78 78 80 83 85 85 85 86 87 88 88 88 89 89 90 93 93 93 94 95 96 96 97 97 98 98
0 0 0 1 1 1 7 8 8 10 10 10 11 13 14 17 18 20 20 21 24 24 25 25 26 29 29 30 31 32 32 33 33 35 35 61 46 55 61 57 59 59 59 39 44 38 41 44 61 49 55 50 36 42 64 60 55 35 52 36 59 38 47 60 36 64 64 66 71 71 71 71 76 76 78 78 80 83 85 85 85 86 87 88 88 88 89 89 90 93 93 93 94 95 96 96 97 97 98 98
0 0 0 1 1 1 7 8 8 10 10 10 11 13 14 17 18 20 20 21 24 24 25 25 26 29 29 30 31 32 32 33 33 35 35 35 46 55 61 57 59 59 59 39 44 38 41 44 61 49 55 50 36 42 36 60 55 61 52 36 59 38 47 60 64 64 64 66 71 71 71 71 76 76 78 78 80 83 85 85 85 86 87 88 88 88 89 89 90 93 93 93 94 95 96 96 97 97 98 98
0 0 0 1 1 1 7 8 8 10 10 10 11 13 14 17 18 20 20 21 24 24 25 25 26 29 29 30 31 32 32 33 33 35 35 35 36 55 60 57 59 59 59 39 44 38 41 44 61 49 55 50 46 42 36 60 55 61 52 36 59 38 47 61 64 64 64 66 71 71 71 71 76 76 78 78 80 83 85 85 85 86 87 88 88 88 89 89 90 93 93 93 94 95 96 96 97 97 98 98
0 0 0 1 1 1 7 8 8 10 10 10 11 13 14 17 18 20 20 21 24 24 25 25 26 29 29 30 31 32 32 33 33 35 35 35 36 36 60 57 59 59 59 39 44 38 41 44 47 49 55 50 46 42 55 60 55 61 52 36 59 38 61 61 64 64 64 66 71 71 71 71 76 76 78 78 80 83 85 85 85 86 87 88 88 88 89 89 90 93 93 93 94 95 96 96 97 97 98 98
0 0 0 1 1 1 7 8 8 10 10 10 11 13 14 17 18 20 20 21 24 24 25 25 26 29 29 30 31 32 32 33 33 35 35 35 36 36 36 57 59 59 59 39 44 38 41 44 47 49 55 50 46 42 55 60 55 38 52 60 59 61 61 61 64 64 64 66 71 71 71 71 76 76 78 78 80 83 85 85 85 86 87 88 88 88 89 89 90 93 93 93 94 95 96 96 97 97 98 98
0 0 0 1 1 1 7 8 8 10 10 10 11 13 14 17 18 20 20 21 24 24 25 25 26 29 29 30 31 32 32 33 33 35 35 35 36 36 36 38 59 59 59 39 44 57 41 44 47 49 55 50 46 42 55 59 55 38 52 60 60 61 61 61 64 64 64 66 71 71 71 71 76 76 78 78 80 83 85 85 85 86 87 88 88 88 89 89 90 93 93 93 94 95 96 96 97 97 98 98
0 0 0 1 1 1 7 8 8 10 10 10 11 13 14 17 18 20 20 21 24 24 25 25 26 29 29 30 31 32 32 33 33 35 35 35 36 36 36 38 38 59 59 39 44 57 41 44 47 49 55 50 46 42 55 59 55 59 52 60 60 61 61 61 64 64 64 66 71 71 71 71 76 76 78 78 80 83 85 85 85 86 87 88 88 88 89 89 90 93 93 93 94 95 96 96 97 97 98 98
0 0 0 1 1 1 7 8 8 10 10 10 11 13 14 17 18 20 20 21 24 24 25 25 26 29 29 30 31 32 32 33 33 35 35 35 36 36 36 38 38 39 59 52 44 57 41 44 47 49 55 50 46 42 55 59 55 59 59 60 60 61 61 61 64 64 64 66 71 71 71 71 76 76 78 78 80 83 85 85 85 86 87 88 88 88 89 89 90 93 93 93 94 95 96 96 97 97 98 98
0 0 0 1 1 1 7 8 8 10 10 10 11 13 14 17 18 20 20 21 24 24 25 25 26 29 29 30 31 32 32 33 33 35 35 35 36 36 36 38 38 39 41 52 44 57 59 44 47 49 55 50 46 42 55 59 55 59 59 60 60 61 61 61 64 64 64 66 71 71 71 71 76 76 78 78 80 83 85 85 85 86 87 88 88 88 89 89 90 93 93 93 94 95 96 96 97 97 98 98
0 0 0 1 1 1 7 8 8 10 10 10 11 13 14 17 18 20 20 21 24 24 25 25 26 29 29 30 31 32 32 33 33 35 35 35 36 36 36 38 38 39 41 42 44 57 55 44 47 49 55 50 46 52 55 59 59 59 59 60 60 61 61 61 64 64 64 66 71 71 71 71 76 76 78 78 80 83 85 85 85 86 87 88 88 88 89 89 90 93 93 93 94 95 96 96 97 97 98 98
0 0 0 1 1 1 7 8 8 10 10 10 11 13 14 17 18 20 20 21 24 24 25 25 26 29 29 30 31 32 32 33 33 35 35 35 36 36 36 38 38 39 41 42 44 57 55 44 47 49 55 50 46 52 55 59 59 59 59 60 60 61 61 61 64 64 64 66 71 71 71 71 76 76 78 78 80 83 85 85 85 86 87 88 88 88 89 89 90 93 93 93 94 95 96 96 97 97 98 98
0 0 0 1 1 1 7 8 8 10 10 10 11 13 14 17 18 20 20 21 24 24 25 25 26 29 29 30 31 32 32 33 33 35 35 35 36 36 36 38 38 39 41 42 44 44 55 55 47 49 55 50 46 52 57 59 59 59 59 60 60 61 61 61 64 64 64 66 71 71 71 71 76 76 78 78 80 83 85 85 85 86 87 88 88 88 89 89 90 93 93 93 94 95 96 96 97 97 98 98
0 0 0 1 1 1 7 8 8 10 10 10 11 13 14 17 18 20 20 21 24 24 25 25 26 29 29 30 31 32 32 33 33 35 35 35 36 36 36 38 38 39 41 42 44 44 46 55 47 49 55 50 52 55 57 59 59 59 59 60 60 61 61 61 64 64 64 66 71 71 71 71 76 76 78 78 80 83 85 85 85 86 87 88 88 88 89 89 90 93 93 93 94 95 96 96 97 97 98 98
0 0 0 1 1 1 7 8 8 10 10 10 11 13 14 17 18 20 20 21 24 24 25 25 26 29 29 30 31 32 32 33 33 35 35 35 36 36 36 38 38 39 41 42 44 44 46 47 52 49 55 50 55 55 57 59 59 59 59 60 60 61 61 61 64 64 64 66 71 71 71 71 76 76 78 78 80 83 85 85 85 86 87 88 88 88 89 89 90 93 93 93 94 95 96 96 97 97 98 98
0 0 0 1 1 1 7 8 8 10 10 10 11 13 14 17 18 20 20 21 24 24 25 25 26 29 29 30 31 32 32 33 33 35 35 35 36 36 36 38 38 39 41 42 44 44 46 47 49 52 50 55 55 55 57 59 59 59 59 60 60 61 61 61 64 64 64 66 71 71 71 71 76 76 78 78 80 83 85 85 85 86 87 88 88 88 89 89 90 93 93 93 94 95 96 96 97 97 98 98
0 0 0 1 1 1 7 8 8 10 10 10 11 13 14 17 18 20 20 21 24 24 25 25 26 29 29 30 31 32 32 33 33 35 35 35 36 36 36 38 38 39 41 42 44 44 46 47 49 50 50 55 55 55 57 59 59 59 59 60 60 61 61 61 64 64 64 66 71 71 71 71 76 76 78 78 80 83 85 85 85 86 87 88 88 88 89 89 90 93 93 93 94 95 96 96 97 97 98 98
对于每个输入,总是有一个值被覆盖,但如果幸运的话,该值被重复覆盖,然后它被排序。但这并不总是会发生。
我该如何解决这个问题?
最佳答案
正如@Bob__ 指出的那样,当其中一个子数组的最大元素出现在第一个位置时(除非最小元素也出现在最后一个位置),程序会做错事。看起来这个错误是从引用作者的伪代码中忠实复制的,这似乎与那篇不太令人印象深刻的论文的类(class)相提并论。由于他们对特定复杂性的分析是基于他们的伪代码,因此其细节也受到质疑,尽管该算法比简单选择排序更快这一事实是毋庸置疑的。
无论如何,我会以完全不同的方式编写这段代码的交换部分:
// swap the maximum and minimum elements into place, handling
// a bit of trickiness when one (or both) of the extreme values
// is at the far opposite end of the interval from where it belongs.
int large = x[i_large];
int small = x[i_small];
if (i_small == i) {
if (i_large != k) {
// Three-way swap: move the middle element to index i_large
x[i_large] = x[k];
} // else a straight swap of positions k and i
} else if (i_large == k) {
// Three-way swap: move the middle element to index i_small
x[i_small] = x[i];
} else {
// Two independent swaps
x[i_small] = x[k];
x[i_large] = x[i];
}
// In all cases:
x[k] = small;
x[i] = large;
那个
关于c - 优化选择排序算法 (OSSA) - 如何解决?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39798057/
是否有某种方法可以使用 JPA 或 Hibernate Crtiteria API 来表示这种 SQL?或者我应该将其作为 native 执行吗? SELECT A.X FROM (SELECT X,
在查询中, select id,name,feature,marks from (....) 我想删除其 id 在另一个 select 语句中存在的那些。 从 (...) 中选择 id 我是 sql
我想响应用户在 select 元素中选择一个项目。然而这个 jQuery: $('#platypusDropDown').select(function () { alert('You sel
这个问题在这里已经有了答案: SQL select only rows with max value on a column [duplicate] (27 个回答) 关闭8年前。 我正在学习 SQL
This question already has answers here: “Notice: Undefined variable”, “Notice: Undefined index”, and
我在 php 脚本中调用 SQL。有时“DE”中没有值,如果是这种情况我想从“EN”中获取值 应该是这样的,但不是这样的 IF (EXISTS (SELECT epf_application_deta
这可能是一个奇怪的问题,但不知道如何研究它。执行以下查询时: SELECT Foo.col1, Foo.col2, Foo.col3 FROM Foo INNER JOIN Bar ON
如何在使用 Camera.DestinationType.FILE_URI. 时在 phonegap camera API 中同时选择或拾取多个图像我能够一次只选择一张图像。我可以使用 this 在
这是一个纯粹的学术问题。这两个陈述实际上是否相同? IF EXISTS (SELECT TOP 1 1 FROM Table1) SELECT 1 ELSE SELECT 0 相对 IF EXIS
我使用 JSoup 来解析 HTML 响应。我有多个 Div 标签。我必须根据 ID 选择 Div 标签。 我的伪代码是这样的 Document divTag = Jsoup.connect(link
我正在处理一个具有多个选择框的表单。当用户从 selectbox1 中选择一个选项时,我需要 selectbox2 active 的另一个值。同样,当他选择 selectbox2 的另一个值时,我需要
Acme Inc. Christa Woods Charlotte Freeman Jeffrey Walton Ella Hubbard Se
我有一个login.html其中form定义如下: First Initial Plus Last Name : 我的do_authorize如下: "; pri
$.get( 'http://www.ufilme.ro/api/load/maron_online/470', function(data
我有一个下拉列表“磅”、“克”、“千克”和“盎司”。我想要这样一种情况,当我选择 gram 来执行一个函数时,当我在输入字段中输入一个值时,当我选择 pounds 时,我想要另一个函数来执行时我在输入
我有一个 GLSL 着色器,它从输入纹理的 channel 之一(例如 R)读取,然后写入输出纹理中的同一 channel 。该 channel 必须由用户选择。 我现在能想到的就是使用一个 int
我想根据下拉列表中的选定值生成输入文本框。 Options 2 3 4 5 就在这个选择框之后,一些输入字段应该按照选定的数字出现。 最佳答案 我建议您使用响应式(Reac
我是 SQL 新手,我想问一下如何根据首选项和分组选择条目。 +----------+----------+------+ | ENTRY_ID | ROUTE_ID | TYPE | +------
我有以下表结构: CREATE TABLE [dbo].[UTS_USERCLIENT_MAPPING_USER_LIST] ( [MAPPING_ID] [int] IDENTITY(1,1
我在移除不必要的床单时遇到了问题。我查看了不同的论坛并将不同的解决方案混合在一起。 此宏删除工作表(第一张工作表除外)。 Sub wrong() Dim sht As Object Applicati
我是一名优秀的程序员,十分优秀!