【发布时间】:2021-08-23 09:27:22
【问题描述】:
首先,当我编写此程序的代码时,它运行良好,但再次运行时,它没有显示预期的输出,有人可以告诉它有什么问题
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin >> n;
int arr[n];
int loc,min;
for (int i = 0; i < n; i++)
{
cin >> arr[i];
}
for (int i = 0; i < n - 1;i++){
min = arr[i];
for (int j = i + 1; j < n; j++)
{
if(min>arr[j]){
min = arr[j];
loc = j;
}
swap(arr[loc],arr[i]);
}
}
for (int i = 0; i < n; i++){
cout << arr[i] << " ";
}
cout << endl;
}
【问题讨论】:
-
在
min = arr[i];之后添加loc=i; -
更好的是,首先不要将值保存在
min中。该 var 是不必要的。这是可行的,只记住潜在客户最小值的位置,最初在内循环之前设置为i,然后用作交换源在内循环之后而不是在内部循环内。 -
@IłyaBursov 仍然无法正常工作
标签: c++ g++ selection-sort