В пузырьковой сортировке посчитать количество перестановок и сравнения - C (СИ)

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

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

В пузырьковой сортировке посчитать количество перестановок и сравнения
//point.c
 
# include "point.h"
 
void bubble_sort(int *arr, int n)
{
    int i, j, t, flag;
    for (i=0; i<n-1; i++)
    {
        flag=0;
        for(j=0;j<n-1-i; j++)
            if (arr[j]>arr[j+1])
            {
                flag=0;
                t=arr[j+1];
                arr[j+1]=arr[j];
                arr[j]=t;
            }
            if(flag!=0)
                break;
    }
}
 
void print_arr (int *arr, int n)
{
    int i;
    for(i=0; i<n; i++)
        printf("%i", arr[i]);
}
 
//point.h
 
# include <stdio.h>
 
void bubble_sort(int *arr, int n);
void print_arr (int *arr, int n);
 
//main.c
 
#include "point.h"
 
int main ()
{
    int arr[]={9,5,8,6,3,7,1};
    print_arr(arr, sizeof arr/sizeof(int));
    bubble_sort(arr, sizeof arr/sizeof(int));
    printf("\n");
    print_arr(arr, sizeof arr/sizeof(int));
    return 0;
}

Решение задачи: «В пузырьковой сортировке посчитать количество перестановок и сравнения»

textual
Листинг программы
#include <stdio.h>
 
int counter;
 
void bubble_sort(int *arr, int n)
{
    int j, t, flag;
 
    while (1)
    {
        flag=0;
        for(j=0;j<n-1;j++)
            if (arr[j]>arr[j+1])
            {
                flag=-1; 
                counter++;
                t=arr[j+1];
                arr[j+1]=arr[j];
                arr[j]=t;
            }
        if(flag==0) break;
    }
}
 
void print_arr(int *arr, int n)
{
    int i;
    for (i=0; i<n; i++) printf("%d ",arr[i]);
    printf("\n");
}
 
int main(int argc, char* argv[])
{
    int Arr[12]={1,2,3,1,2,3,1,2,3,1,2,3};
    counter=0;
    print_arr(Arr,12);
    bubble_sort(Arr,12);
    print_arr(Arr,12);
    printf("\ncounter=%d\n",counter);
    return 0;
}

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

  1. Объединение файлов .h и .c
  2. Объявление переменных:
    • counter - для подсчета количества перестановок
    • Arr - массив для сортировки
  3. Реализация пузырьковой сортировки:
    • j, t, flag - вспомогательные переменные
    • флаг устанавливается в 0 перед каждой итерацией
    • если текущий элемент больше следующего, то:
    • меняется флаг на -1
    • увеличивается счетчик перестановок
    • текущий элемент меняется местами с предыдущим
  4. Реализация вывода массива на экран
  5. В функции main():
    • инициализация массива Arr
    • вывод массива на экран до сортировки
    • вызов функции сортировки
    • вывод массива на экран после сортировки
    • вывод значения счетчика перестановок

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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