Пузырьковая сортировка. Функции - 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