使用交换以递增顺序递归排序数组,并找到最小的函数

时间:2018-01-15 13:00:24

标签: c++ arrays algorithm sorting recursion

我需要递归地按升序对数组进行排序,同时找到最小的索引并将其交换到数组中的第一个位置等。我编写了一个代码,但不确定它出错的地方。我有两个函数,一个只是简单地在两个索引之间交换,一个用于查找数组中的最小数字并返回它的索引。

void Swap(int a[], int i, int j) 
{
    int temp = a[i];
    a[i] = a[j];
    a[j] = temp;
}

int smallest(int *arr, int size)
{
    int small;
    if (size == 1)
    {
        return 0;
    }
    small = smallest(arr, size - 1);//go from the last to the first index in the array and then work backwards to find the smallest one all the way back to the beginning
    return (arr[size - 1] < arr[small]) ? size - 1 : small;
}

void chooseSort(int * arr, int size, int left)
{
    if (left == size -1)
    {
        return;
    }
    int index = smallest(arr, size);
    Swap(arr, index, left);
    chooseSort(arr, size, left + 1);
}

0 个答案:

没有答案