Вместо сортировки происходит хаотичная перестановка - C (СИ)
Формулировка задачи:
Почему не сортирует? Он просто их хаотично переставляет. Где моя ошибка?
#include <stdio.h> enum Bool {FALSE,TRUE,UNDEF}; int* bubble(int *a,int len) { int j,buf; enum Bool flag=UNDEF; while (flag==TRUE){ for (j=0;j<len;j++){ if (a[j]>a[j+1]) { buf=a[j]; a[j]=a[j+1]; a[j+1]=buf; flag=FALSE; } else flag=TRUE; } } return a; } void main() { int data[10]={1,5,8,3,55,9,0,-6,-9,12}; int i; int *b; int len=10; b=bubble(data,len); for (i=0;i<len;i++) printf("%d ",b[i]); }
Решение задачи: «Вместо сортировки происходит хаотичная перестановка»
textual
Листинг программы
a[j]=a[j+1]; a[j+1]=buf;
Объяснение кода листинга программы
- В данном коде происходит обмен значениями между двумя переменными типа
a
иbuf
. - Переменная
j
используется как индекс для обращения к элементам массиваa
. - Значение переменной
buf
присваивается переменнойa
с индексомj
. - Значение переменной
a
с индексомj+1
присваивается переменнойbuf
. - В результате происходит обмен значениями между переменными
a
иbuf
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д