Написать программу, которая методом быстрой сортировки упорядочивает по убыванию введенный пользователем массив вещественных чисел - C (СИ)
Формулировка задачи:
Написать программу, которая методом быстрой сортировки упорядочивает по убыванию введенный пользователем массив вещественных чисел. Исходный не отсортированный массив вводится пользователем. Результат помещается в файл results.txt.
В методе сортировки находит также ошибку которую я не могу решить.
#include <stdio.h> void QuickSort(int *a, int size); void static(int *a, int l, int r); int main(){ int Arr[]={5,4,5,6,1}; int size=5; QuickSort(Arr, size); for(int i=0; i<size; i++) printf("%d \t", Arr[i]); printf("\n"); } void static qs(int *a, int l, int r){ int i = l, j = r, t, x = a[(l+r)/2]; do{ for(; a[i] < x; i++); for(; a[j] > x; j--); if(i <= j){ t = a[i]; a[i] = a[j]; a[j] = t; i++; j--; } } while(i <= j); if(r > i) qs(a,i,r); if(j > l) qs(a,l,j); } void QuickSort(int *a, int size){ qs(a,0,size-1); }
Решение задачи: «Написать программу, которая методом быстрой сортировки упорядочивает по убыванию введенный пользователем массив вещественных чисел»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> int sortfloat(const void *pa, const void *pb); FILE *out; int main() { int size, i; printf("Введите размер массива:"); scanf("%d", &size); float Arr[size]; float temp; printf("Введите числа, по одному в каждой строке\n"); for(i = 0; i < size; i++) { scanf("%f", &temp); Arr[i] = temp; } out = (fopen("result.txt", "wb")); qsort(Arr, size, sizeof(float), sortfloat); for(i=0; i<size; i++) fprintf(out, "%.4f \t", Arr[i]); fclose(out); return 0; } int sortfloat(const void *pa, const void *pb) { float a = *(float*)pa; float b = *(float *)pb; if(a > b) return 1; if(a < b) return -1; return 0; }
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы с файлами и сортировки массивов
- Определение функции сортировки, которая будет использоваться в методе быстрой сортировки
- Запрос у пользователя размера массива
- Чтение введенных пользователем чисел и сохранение их в массиве
- Открытие файла
result.txt
для записи - Сортировка массива методом быстрой сортировки с использованием функции qsort и функции сравнения sortfloat
- Запись отсортированного массива в файл
result.txt
- Закрытие файла
result.txt
- Возврат 0, что означает успешное выполнение программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д