Почему сортировка не работает? - C (СИ)

Узнай цену своей работы

Формулировка задачи:

кто подскажет в чем проблема.почему не сортирует?
#include <stdio.h>
int main()
{
int arr[256],size,j,tmp=0;
printf("N=");scanf("%d",&size);
for (int i=0;i<size;i++)
{
printf("x[%d]=",i);
scanf("%d",&arr[i]);
}
int bubbleSort(int* arr, int size);
for (int i=0;i<size;i++){
printf("%d",arr[i]);
}
return 0;
}
 
void bubbleSort(int* arr, int size)
{
int tmp, i, j;
for(i = 0; i < size-1; ++i)
{
for(j = 0; j < size-1 ; ++j)
{
if (arr[j + 1] < arr[j])
{
tmp = arr[j+1];
arr[j+1] = arr[j];
arr[j] = tmp;
            }
        }
    }
}

Решение задачи: «Почему сортировка не работает?»

textual
Листинг программы
#include <stdio.h>
void bubbleSort(int* arr, int size);
int main()
{
int arr[256],size,j,tmp=0;
printf("N=");scanf("%d",&size);
for (int i=0;i<size;i++)
{
printf("x[%d]=",i);
scanf("%d",&arr[i]);
}
bubbleSort(arr, size);
for (int i=0;i<size;i++){
printf("%d",arr[i]);
}
return 0;
}
 
void bubbleSort(int* arr, int size)
{
int tmp, i, j;
for(i = 0; i < size-1; ++i)
{
for(j = 0; j < size-1 ; ++j)
{
if (arr[j + 1] < arr[j])
{
tmp = arr[j+1];
arr[j+1] = arr[j];
arr[j] = tmp;
            }
        }
    }
}

Объяснение кода листинга программы

В этом коде реализована сортировка массива методом пузырька. Пузырьковая сортировка — это один из простейших алгоритмов сортировки, в котором элементы сравниваются попарно и меняются местами в зависимости от того, какой из них больше. Этот процесс повторяется до тех пор, пока массив не будет отсортирован. Вот что происходит в этом коде:

  1. Сначала объявляются переменные:
    • arr — указатель на массив, который нужно отсортировать.
    • size — размер массива.
    • j — индекс для внешнего цикла.
    • tmp — временная переменная для хранения значения при обменном операторе.
  2. Затем происходит чтение данных из массива с помощью scanf().
  3. После этого вызывается функция bubbleSort(), которая сортирует массив методом пузырька.
  4. Внутри функции bubbleSort() объявляются три переменные:
    • tmp — используется как временная переменная для хранения значения при обменном операторе.
    • i и j — используются как индексы для внутренних циклов.
  5. Внутренний цикл функции bubbleSort() выполняется до тех пор, пока j меньше size-1.
  6. Внутренний цикл выполняет следующие действия:
    • Проверяет, больше ли arr[j+1] arr[j]. Если это так, то меняет их местами с помощью обменного оператора tmp = arr[j+1]; arr[j+1] = arr[j]; arr[j] = tmp;.
    • Увеличивает значение j на 1.
  7. Когда внутренний цикл завершается, увеличивается значение i на 1.
  8. Если i меньше size-1, то внутренний цикл повторяется.
  9. Когда внешний цикл завершается, значения массива выводятся на экран с помощью printf().
  10. Функция main() возвращает 0, что означает успешное выполнение программы.

Оцени полезность:

10   голосов , оценка 4.3 из 5
Похожие ответы