【发布时间】:2020-12-11 07:19:06
【问题描述】:
int arr[] = {7,4,10,8,3,1};
int size = sizeof(arr) / sizeof(arr[0]);
for(int i = 0; i<size-1; i++){
int temp = arr[i];
for(int j = i+1; j < size; j++){
if(arr[j] < temp){
temp = arr[j];
}
}
swap(temp, arr[i]);
}
我正在尝试对给定数组应用选择排序算法,但我得到的输出只有[1,1,1,1,1,1],我正在通过内部循环找到最小元素,我不知道出了什么问题?
【问题讨论】:
-
想想
swap(temp, array[i]);做了什么。它本质上是array[i] = temp;,因为之后temp就超出了范围 -
恕我直言,在定义内容时不要说明数组的容量。让编译器弄清楚。这样,您就不会过度分配空间。示例:
const int arr[] = {7,4,10,8,3,1}; -
array定义在哪里? -
@ThomasMatthews 然后做
const auto size = sizeof(arr) / sizeof(*arr);这样我们就可以在循环条件下使用它了吗?有什么意义? -
现在是 2020 年。我们都同意使用
std::size吗?
标签: c++ sorting selection-sort array-algorithms