我试图在这里实现选择排序。请让我知道这里出了什么问题,以及选择排序的实现是否有任何问题
#include <iostream>
using namespace std;
void selectionsort(int arr, int size)
{
int temp = 0;
int min = 0;
int i, j, k;
for (i = 0; i<size-1;i++)
{
min = arr[i];
for(j = i+1; j<size; j++)
{
if(arr[j] < min)
{
temp = min;
min = arr[j];
arr[j] = temp;
}
else if (arr[j] >= min)
{
continue;
}
}
}
for (k = 0; k <size; k++)
{
cout<<arr[k];
}
}
int main()
{
int arr1[] = {5, 3, 4, 2, 1};
int size = sizeof(arr1)/sizeof(arr1[0]);
selectionsort(arr1, size);
return 0;
}
请让我知道这里出了什么问题,以及选择排序的实现是否有任何问题。
代码交换中的主要问题在选择排序中无法按预期工作。我建议将索引存储在最小变量中,并在第二个循环之外交换值。
min = i;
for (j = i + 1; j<size; j++)
{
if (arr[j] < arr[min])
{
min = j;
}
}
temp = arr[min];
arr[min] = arr[i];
arr[i] = temp;
并且不要忘记更改参数类型,因为它已经注释了