C: я создал программу для сортировки массива в порядке возрастания и не могу понять причину определенного шага в циклах for - PullRequest
0 голосов
/ 10 февраля 2020

Я делаю программу для сортировки чисел в массиве, используя метод пузырьковой сортировки в c, и я знаю, как это сделать, но я не могу понять, какая секунда для вычитания l oop s j<n-i-1 я из длины массива для. Это, вероятно, простое объяснение, но я не могу за всю жизнь взяться за мой маленький мозг за ответ.

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int input[10],swap;
    printf("Input Numbers: ");
    scanf("%d%d%d%d%d%d%d%d%d%d",&input[0],&input[1],&input[2],&input[3],&input[4],&input[5],&input[6],&input[7],&input[8],&input[9]);
    int n=10;
    for(int i=0;i<n-1;i++){
        for(int j=0;j<n-i-1;j++){
            if(input[j]>input[j+1]){
                swap=input[j];
                input[j]=input[j+1];
                input[j+1]=swap;
            }
        }
    }
    printf("Sorted List: {");
    for(int i=0;i<10;i++){
        if(i<9){
            printf("%d, ",input[i]);
        }
        else{
            printf("%d}",input[i]);
        }
    }
    return 0;
}

1 Ответ

0 голосов
/ 10 февраля 2020

На первой итерации i l oop наибольший элемент всплывает до конца n элементов в массиве. После этого мы знаем, что последний элемент сделан. Таким образом, нам нужно только сделать n-1 оставшихся элементов.

Во второй итерации i l oop следующий наибольший элемент всплывает до конца элементов n-1, которые мы работа над. После этого мы знаем, что последние два элемента выполнены. Поэтому нам нужно только сделать n-2 оставшихся элементов.

Это продолжается, так что на каждой итерации нам нужно работать только с n-i элементами. Поскольку элементы j и j+1 сравниваются, нам нужно только j, чтобы достичь n-i-2, , то есть , быть меньше n-i-1., Поскольку это даст j+1 до n-i-1. (Количество элементов от индекса 0 до индекса n-i-1 равно n-i.)

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