Переделать программу методом сортировки пузырька - 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.