k маленький элемент - что не так с этим кодом? - PullRequest
0 голосов
/ 18 июня 2019

Я много раз запускал код, но не могу найти проблему.

#include <stdio.h>

int main()
{
    int arr[] = {9,8,5,10,2};
    int i, j, k, small;
    scanf("%d", &k);
    int n=5;
    int asc[k];
    if(k<n)
    {
        for(i=0; i<k; i++)
        {
            small=arr[i];
            for(j=i; j<n; j++)
            {
                if(arr[j]<small)
                {
                    small=arr[j];
                }
            }
            asc[i]=small;
        }
        printf("%d", asc[k-1]);
    }

    return 0;
}

вывод должен вернуть k-й наименьший элемент. Также я создал массив «asc» для хранения наименьших элементов в порядке возрастания после каждой итерации внешнего цикла.

Выход - 2 каждый раз

Ожидается - когда вставлено любое значение (k) меньше n, оно должно вернуть k-й наименьший элемент.

Ответы [ 2 ]

2 голосов
/ 18 июня 2019

Что произойдет, если самый маленький элемент будет последним?Это ваш случай: {9,8,5,10,2} На каждой итерации вы находите наименьший элемент (2) и присваиваете его текущему элементу asc.Результат asc[] = {2, 2, 2} (состоит из k равных элементов).

0 голосов
/ 22 июня 2019

Ребята я сделал это с помощью простой сортировки. Я пытался сделать это без использования сортировки или рекурсии, но это кажется очень трудным, если не невозможным. В любом случае спасибо за вашу помощь !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...