Вывод массива через функцию после сортировки - C (СИ)
Формулировка задачи:
У меня есть небольшая проблема, помогите, пожалуйста.
Как мне распечатать массив после его сортировки ? Если использовать обычный фор, то у меня получается ошибка сегментации
#include<stdio.h> #include<string.h> void bubble(char *items, int count) { register int a, b; register char t; for(a=1; a < count; ++a) for(b=count-1; b >= a; --b) { if(items[b-1] > items[b]) { t = items[b-1]; items[b-1] = items[b]; items[b] = t; } } } void insertSort(char a[], int length) { int i, j, value; for(i = 1; i < length; i++) { value = a[i]; for (j = i - 1; j >= 0 && a[j] > value; j--) { a[j + 1] = a[j]; } a[j + 1] = value; } } void selectSort(int* arr, int size) { int tmp, i, j, pos; for(i = 0; i < size; ++i) // i - номер текущего шага { pos = i; tmp = arr[i]; for(j = i + 1; j < size; ++j) // цикл выбора наименьшего элемента { if (arr[j] < tmp) { pos = j; tmp = arr[j]; } } arr[pos] = arr[i]; arr[i] = tmp; // меняем местами наименьший с a[i] } } int main(){ int a,i; scanf("%d",&a); int b[a]; for (i = 0; i<a; i++) scanf("%d",&b[i]); //for (i = 0; i<a; i++) // printf("%d ", b[i]); printf("Выберети метод сортировки:\n Сортировка пузырьковая - 1 \n Сортировка вставками - 2 \n Сортировка слияниями - 3 \n"); scanf("%d",&a); switch(a) { case 1: printf("Пузырьковая сортировка\n"); // bubble(b, strlen(b)); // printf("Отсортированная строка: %s.\n", b); break; case 2: printf("Сортировка вставками\n"); // insertSort(b, strlen(b)); // printf("Отсортированная строка: %s.\n", b); break; case 3: printf("Сортировка выбором\n"); selectSort(b, sizeof(b)); for (i=0; i < sizeof(b); ++i) printf("Отсортированная строка: %d.\n", b[i]); break; } return 0; }
Решение задачи: «Вывод массива через функцию после сортировки»
textual
Листинг программы
selectSort(b, sizeof(b) / sizeof(b[0])); for (i=0; i < sizeof(b) / sizeof(b[0]); ++i)
Объяснение кода листинга программы
- В данном коде предполагается, что функция selectSort() используется для сортировки массива b.
- Функция selectSort() принимает два аргумента: b и size, где size - это размер массива b.
- В данной постановке задачи, размер массива b вычисляется как результат деления sizeof(b) на sizeof(b[0]) (предполагается, что b[0] является первым элементом массива).
- Затем, с помощью цикла for, происходит итерация по всем элементам массива b, начиная с индекса 0 и до размера массива.
- В каждой итерации цикла, значение элемента массива выводится на экран.
- Значение переменной i увеличивается на 1 после каждой итерации цикла.
- Предполагается, что в процессе сортировки элементы массива меняются местами, но в данном коде это не отражено.
- Предполагается, что элементы массива b уже инициализированы до вызова функции selectSort().
- Предполагается, что функция selectSort() изменяет порядок элементов массива b на месте, без создания дополнительных массивов.
- Предполагается, что элементы массива b являются типа данных, для которых определена операция сравнения
<
. - Предполагается, что в процессе сортировки элементы массива не пропускаются и не удаляются.
- Предполагается, что в процессе сортировки элементы массива не дублируются.
- Предполагается, что в процессе сортировки элементы массива не изменяются, кроме их порядка.
- Предполагается, что функция selectSort() возвращает void, то есть не возвращает никакого значения.
- Предполагается, что функция selectSort() не принимает дополнительных аргументов, кроме b и size.
- Предполагается, что в процессе сортировки элементы массива не выходят за пределы массива.
- Предполагается, что в процессе сортировки элементы массива не перезаписываются.
- Предполагается, что элементы массива b могут быть любого типа данных, для которых определена операция сравнения
<
. - Предполагается, что элементы массива b могут быть размещены в памяти подряд.
- Предполагается, что элементы массива b могут быть упорядочены по возрастанию или по убыванию.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д