Пузырьковая сортировка массива в C в отдельной функции

#c

#c

Вопрос:

Я хотел бы отсортировать массив с плавающей точкой, используя пузырьковую сортировку в C. Я бы хотел, чтобы эта функция возвращала этот отсортированный массив и присваивалась моей переменной testSorted. Однако, когда я печатаю testSorted, результат равен 0.0000. Может кто-нибудь, пожалуйста, помочь здесь?

     float * bubbleSort(float statsArray[], int n){
    
            float swap;
    
            for ( int a = 0;  a < n-1; a  )
            {
                for (int b = 0; b < n - a - 1; b  )
                {
                    if (statsArray[b] < statsArray[b 1])
                    {
                        swap  = statsArray[b];
                        statsArray[b] = statsArray[b 1];
                        statsArray[b 1] = swap;
                    }
    
                }
            }
    
            return statsArray;
    }
    
    void main() {
    
      float test[SIZE] = { 34, 201, 190, 154,   8, 194,   2,   6,
                           114, 88,   45,  76, 123,  87,  25,  23,
                           200, 122, 150, 90,   92,  87, 177, 244,
                           201,   6,  12,  60,   8,   2,   5,  67,
                           7,  87, 250, 230,  99,   3, 100,  90};
    
      /*  Variable Declarations */
    
      float average;
      float * testSorted;
      int p;
      float maximum, minimum;
    
      p = 40;
    
      testSorted =  bubbleSort(test, p);
      printf(testSorted);

      return 0;
}
 

Комментарии:

1. Вы не можете просто printf(float_array) . Вам следует подумать о написании цикла для печати элементов по отдельности с %f заполнителем в формате

2. Что еще вы ожидали от печати?

Ответ №1:

printf(testSorted); довольно нарушена, потому что первый аргумент printf должен быть указателем на строку char * формата, а не массив с плавающей точкой.

Вместо этого, чтобы распечатать массив, вам нужно сделать что-то вроде следующего:

 printf("{ ");
for (int a = 0; a < SIZE; a  ) {
  printf("%f ", test[a]);
}
printf("}");