【发布时间】:2019-04-09 14:31:22
【问题描述】:
如何计算selectionsort中的比较?
条款: 当您执行查找最大值的语句为“真”时 然后计数比较。
获取最大值的值保存在数组的第一个元素中,而不是随机的。
我尝试使用 C 可变计数位置变化 - 没有工作 新变量 'first' ,first=sort[MAX] 先插入 for 循环,- 没用
#include <stdio.h>
int main() {
int sort[10000], i, n, MAX, temp, count;
scanf("%d", &n);
for (i = 0; i < n; i++) {
scanf("%d", &sort[i]);
}
for (MAX = 0; MAX < n; MAX++)
for (i = MAX + 1; i < n; i++) {
if (sort[MAX] > sort[i]) {
count++;
temp = sort[MAX];
sort[MAX] = sort[i];
sort[i] = temp;
}
}
printf("%d ", count);
return 0;
}
示例输入
10
0 7 1 6 7 7 6 6 5 4
样本输出
17
编辑:新代码:
#include <stdio.h>
#define SWAP(x, y, temp) ( (temp)=(x), (x)=(y), (y)=(temp) )
int count = 0;
void selection_sort(int list[], int n) {
int i, j, least, temp;
for (i = 0; i < n - 1; i++) {
least = i;
for (j = i + 1; j < n; j++) {
if (list[j] < list[least]) {
least = j;
count++;
}
}
SWAP(list[i], list[least], temp);
}
}
int main() {
int list[10000], i, n;
scanf("%d", &n);
for (i = 0; i < n; i++) {
scanf("%d", &list[i]);
};
selection_sort(list, n);
printf("%d", count);
}
这个怎么样?为什么这段代码也没有移动?
【问题讨论】:
-
呃,
first是怎么初始化的? -
对不起我的小姐。代码是没有使用变量的第一个版本。但我尝试 (for{ first=sort[MAX] for{}}
-
“如何计算比较选择排序”不是一个有效的句子,其余的不是更具可读性。改进文本。
-
@skytrack31:您可以通过单击分数下方的灰色复选标记来接受其中一个答案。
标签: c++ c selection-sort