Написать программу, которая методом быстрой сортировки упорядочивает по убыванию введенный пользователем массив вещественных чисел - 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, что означает успешное выполнение программы