В настоящее время я пытаюсь изучить C, и упражнение, которое я нашел онлайн, создает функцию, которая возвращает индекс наименьшего значения в массиве. Это моя функция:.Сортировка массива на основе индекса минимального значения?
int return_index_of_minimum(int A[10], int i, int j){
int minimum_value = A[i];
int index_to_return = 0;
for (int index = i; index < j; index++){
if (A[index] < minimum_value){
minimum_value = A[index];
index_to_return = index;
}
}
return index_to_return;
}
я и J являются нижняя и верхняя граница числа функция должна выглядеть в Например, если я это 4 и J является 8, что означает, что функция будет возвращать индекс наименьшее значение между индексами 4 и 8.
Вот моя главная функция:
#include <stdio.h>
int main(){
int numbers[10];
int user_input = 0;
for (int i = 0; i < 10; i++){
printf("Please enter a number: ");
scanf_s("%d", &user_input);
numbers[i] = user_input;
}
for (int i = 0; i < 10; i++){
int index_of_min_value = return_index_of_minimum(numbers, i, 10);
int old_num = numbers[index_of_min_value];
int new_num = numbers[i];
numbers[index_of_min_value] = new_num;
new_array[i] = old_num;
}
for (int i = 0; i < 10; i++){
printf("%d\n", new_array[i]);
}
}
пользователь должен сначала ввести кучу цифр и что бы заполнить массив со значениями пользователя. Идея состоит в том, чтобы использовать return_index_of_minimum
, чтобы вернуть индекс наименьшего элемента в массив, а затем установить равным numbers[0]
с циклом for, а затем numbers[1]
, а затем и так далее. old_num
- это самое низкое число в массиве по его предыдущему индексу. Здесь я пытаюсь заменить это минимальное значение на numbers[i]
Однако, когда я закончил сортировку по всему массиву и распечатаю его, я вижу, что 10 (когда пользователь вводит 1-10 случайным образом для значений) находится в индексе 0, а затем остальные числа находятся в порядке. Кто-нибудь видит, что здесь не так?
время, чтобы узнать, как использовать отладчик. С помощью отладчика вы можете проходить код за строкой, контролируя переменные и их значения. Это поможет вам понять, что делает какая-то часть кода * на самом деле. :) –
ваша функция 'return_index_of_minimum' не работает, если первое значение является минимальным, а' i' не '0'. Измените 'int index_to_return = 0;' на 'int index_to_return = i;'. – mch
Прошу прощения, я не совсем вижу ошибку, которую вы видите. 'int index_to_return = 0' на самом деле просто для инициализации переменной (если это не требуется). Если первое значение является минимальным, то не будет ли цикл полностью обходить оператор if и возвращать индекс в 0? – MistFTW