C ++ Selection排序的实现不正确。任何建议

时间:2017-10-24 01:57:54

标签: c++ arrays sorting

我试图在这里实现选择排序。请告诉我这里有什么问题以及选择排序的实施是否有问题

#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;
}

请告诉我这里有什么问题以及选择排序的实施是否有问题。

1 个答案:

答案 0 :(得分:0)

代码交换中的主要问题在选择排序中无法正常工作。 我建议将索引存储在min变量中,并在第二个循环之外交换值。

    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;

并且不要忘记更改已经注释的参数类型