我正在尝试在for循环中使用此函数findMinimumIndex对数组进行排序,但是我似乎找不到无法正确排序的数组。有什么建议?该函数本身可以正常工作,但是当我尝试在循环中使用它时,它将无法正常工作。有什么建议?谢谢!
int findMinimumIndex(A[], int a, int b); //Finds smallest index of portion of array (A[i] ... A[j])
int main(){
int A[5] = {4,6,7,4,3};
int smallest_index;
for (int j = 0; j < count; j++){
smallest_index = findMinimumIndex(A, j, 4);
printf("Sorted: %d\n", A[smallest_index]);
}
}
int findMinimumIndex(int A[], int a, int b){
int smallest_value = A[a];
int index = 0;
for (int k = a; k < j - 1; k++){
if (A[k + 1] < smallest_value){
smallest_value = A[k+1];
index = k + 1;
}
}
return index;
}
如果找到最小值及其索引,则应切换值:
看这个例子:
你有数组:
{4,6,7,4,3}
首先,您将3
在index处找到值4
,但必须移动最小值(在j=0
index处将值切换):
{3,6,7,4,4}
然后,您将4
在index上找到3
,然后使用j=1
以下命令进行切换:
{3,4,7,6,4}
ETC。
修改您的代码:
for (int j = 0; j < count; j++){
smallest_index = findMinimumIndex(A, j, 4);
int tmp = A[smallest_index];
A[smallest_index] = A[j];
A[j] = tmp;
printf("Sorted: %d\n", A[j]);
}
编辑:更正:
数组的长度为5:
smallest_index = findMinimumIndex(A, j, 5);
并将索引设置为 a
int findMinimumIndex(int A[], int a, int b){
int smallest_value = A[a];
int index = a;
/* code */
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句