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