Переделать программу методом сортировки пузырька - C (СИ)
Формулировка задачи:
Помогите пожалуйста переделать программу методом сортировки пузырька. Буду очень благодарен)))
#include <stdio.h> int main(void) { int i, j=0, imax, a[10], b[10], *min, *max, *p; for(;;) { printf("Vvedite imax "); scanf("%d", &imax); if (imax<1||imax>10) printf("Error"); else break; }; for (i=0; i<=imax; i++) { printf("Vvedite a[%d] ", i); scanf("%d", &a[i]); }; max=&a[0]; for(i=0; i<=imax; i++) { if (&a[i]>max) max=&a[i]; }; min=&a[0]; for(i=0; i<=imax; i++) { if (&a[i]<min) min=&a[i]; }; for (p=max; p>=min; p--) { for(i=0; i<=imax; i++) { if(&a[i]==p) { b[j]=i; j++;}; }; }; for (j=0; j<=imax; j++) printf("%d", b[j]); getchar(); getchar(); return 0; }
Решение задачи: «Переделать программу методом сортировки пузырька»
textual
Листинг программы
void sort(float *A,int count) { int flag=1; for(;flag==1;) { flag=0; for(int i=0;i<count-1;i++) { if(A[i]>A[i+1]) { swap(&A[i],&A[i+1]); flag=1; } } } }
Объяснение кода листинга программы
- В функции sort(float *A,int count) на вход подается массив A и его размер count.
- Переменная flag инициализируется значением 1.
- Начинается цикл while(flag==1), который будет выполняться до тех пор, пока флаг не станет равным 0.
- Внутри цикла происходит еще один цикл for, который проходит по всем элементам массива, начиная с 0 и заканчивая count-1.
- Если текущий элемент массива A[i] больше следующего элемента A[i+1], то они меняются местами с помощью функции swap(&A[i],&A[i+1]) и флаг устанавливается в 1.
- После завершения внутреннего цикла, флаг проверяется на равенство 0. Если это так, то циклы завершаются.
- Если флаг не равен 0, то это означает, что в массиве есть элементы, которые необходимо переставить для сортировки.
- Функция sort возвращает отсортированный массив A.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д