Пузырьковая сортировка. Функции - 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д