Пузырьковая сортировка. Функции - C (СИ)
Формулировка задачи:
Есть задание. Сделать пузырьковую сортировку. С использованием функций. Написал что знаю, но все равно не работает. Поэтому решил обратиться к более опытным людям (пишу сюда первый раз, до этого онлирид).
Программа содержит функции:недокод:
Прошу помочь с кодом на Си. Не С++.
- INPUTMAS - вводим массив;
- OUTPUTMAS - выводим массив на экран. Плюс, используется для вывода отсортированного массива;
- SORT - пузырьковая сортировка.
Листинг программы
- #include<stdio.h>
- int n=10;
- void inputmas(int a[n]);
- //int outpumas(int a[n]);
- void sort (int a[n]);
- int main()
- {
- void inputmas(int a[n]) //вводим массив
- {
- int i;
- for(i=0;i<n;i++)
- {
- printf("mas[%d]=",i); //Диалога нет. Сразу, почему то прыгает на ретурн
- scanf("%d",&a[i]);
- }
- }
- }
- //int outputmas(int a[n])
- //{ здесь нужно вывести введенный массив
- //for(i=0;i<n;i++)
- //{
- //printf("mas[a]={%d}",i);
- void sort{int a[n]) //пузырьковая сортировка. Как вы поняли, не работает
- {
- int t=0,i,j;
- for(i=0;i<n;i++)
- {
- for(j=n-1;j>=1;j--)
- {
- if(a[j]<a[j-1])
- {
- t=a[j]; a[j]=a[j-1]; a[j-1]=t;
- }
- }
- }
- }
- //int outputmas
- //{
- //printf("%d",t); здесь нужно вывести отсортированный массив
Решение задачи: «Пузырьковая сортировка. Функции»
textual
Листинг программы
- #include<stdio.h>
- #include <stdlib.h>
- void inputmas(int *a, int n) //вводим массив
- {
- int i;
- for(i=0;i<n;i++)
- {
- scanf("%d ",&a[i]);
- }
- }
- void sort(int *a, int n)
- {
- int i, j, tmp;
- for(i = 0; i < n; i++)
- for(j = n - 1; j >= 0; j--)
- if(a[j] < a[j+1])
- {
- tmp = a[j];
- a[j] = a[j+1];
- a[j+1] = tmp;
- }
- }
- void outputmas(int *a, int n)
- {
- int i;
- for(i = 0; i < n; i++)
- printf("%d ", a[i]);
- }
- int main()
- {
- int n;
- int *a;
- scanf("%d", &n);
- a = (int*)calloc(n, sizeof(int));
- inputmas(a, n);
- sort(a, n);
- outputmas(a, n);
- return 0;
- }
Объяснение кода листинга программы
- #include
— подключаем стандартную библиотеку для работы с файлами ввода/вывода - #include
— подключаем стандартную библиотеку для работы с памятью - *void inputmas(int a, int n)** — функция для ввода массива
- int i; — объявление переменной для цикла
- for(i=0;i<n;i++) — цикл для прохода по всем элементам массива
- scanf(
%d
,&a[i]); — ввод элемента массива с помощью функции scanf - *void sort(int a, int n)** — функция для сортировки массива методом пузырька
- int i, j, tmp; — объявление переменных для сортировки
- for(i = 0; i < n; i++) — внешний цикл для прохода по всем элементам массива
- for(j = n - 1; j >= 0; j--) — внутренний цикл для сравнения элементов
- if(a[j] < a[j+1]) — условие для обмена элементов
- tmp = a[j]; — временная переменная для хранения элемента
- a[j] = a[j+1]; — обмен элементов
- a[j+1] = tmp; — обмен элементов
- *void outputmas(int a, int n)** — функция для вывода отсортированного массива
- int i; — цикл для прохода по всем элементам массива
- printf(
%d
, a[i]); — вывод элемента массива с помощью функции printf - int n; — переменная для хранения размера массива
- *int a;** — переменная для хранения указателя на массив
- scanf(
%d
, &n); — ввод размера массива с помощью функции scanf
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д