Вывод массива через функцию после сортировки - 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)

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

  1. В данном коде предполагается, что функция selectSort() используется для сортировки массива b.
  2. Функция selectSort() принимает два аргумента: b и size, где size - это размер массива b.
  3. В данной постановке задачи, размер массива b вычисляется как результат деления sizeof(b) на sizeof(b[0]) (предполагается, что b[0] является первым элементом массива).
  4. Затем, с помощью цикла for, происходит итерация по всем элементам массива b, начиная с индекса 0 и до размера массива.
  5. В каждой итерации цикла, значение элемента массива выводится на экран.
  6. Значение переменной i увеличивается на 1 после каждой итерации цикла.
  7. Предполагается, что в процессе сортировки элементы массива меняются местами, но в данном коде это не отражено.
  8. Предполагается, что элементы массива b уже инициализированы до вызова функции selectSort().
  9. Предполагается, что функция selectSort() изменяет порядок элементов массива b на месте, без создания дополнительных массивов.
  10. Предполагается, что элементы массива b являются типа данных, для которых определена операция сравнения <.
  11. Предполагается, что в процессе сортировки элементы массива не пропускаются и не удаляются.
  12. Предполагается, что в процессе сортировки элементы массива не дублируются.
  13. Предполагается, что в процессе сортировки элементы массива не изменяются, кроме их порядка.
  14. Предполагается, что функция selectSort() возвращает void, то есть не возвращает никакого значения.
  15. Предполагается, что функция selectSort() не принимает дополнительных аргументов, кроме b и size.
  16. Предполагается, что в процессе сортировки элементы массива не выходят за пределы массива.
  17. Предполагается, что в процессе сортировки элементы массива не перезаписываются.
  18. Предполагается, что элементы массива b могут быть любого типа данных, для которых определена операция сравнения <.
  19. Предполагается, что элементы массива b могут быть размещены в памяти подряд.
  20. Предполагается, что элементы массива b могут быть упорядочены по возрастанию или по убыванию.

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


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

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

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