Тема: рекурсивне сортування quicksort
Привіт всім ,стикнувся з пробемою некоректного сортування і відображення .Може хтось допомогти розібратись з проблемою?
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
typedef struct slovechka
{
char words[25];
}SV;
SV* list = (SV*)malloc(1000 * sizeof(SV));
int max;
void number(void);
void slova(void);
void print(void);
void Sort();
void quicksort(char[], int, int, int);
int main()
{
system("chcp 1251");
system("cls");
system("color F0");
number();
slova();
print();
quicksort(list->words, max, 0, max - 1);
print();
Sort();
print();
return 0;
free(list);
system("pause");
return 0;
}
void number(void)
{
printf("Введіть кількість слів: ");
scanf_s("%ld", &max);
}
void slova(void)
{
getchar();
puts("\tВведіть дані");
for (int i = 0; i < max; i++)
{
printf("слово %d: ",i+1);
scanf("%s", &list[i].words);
getchar();
}
getchar();
}
void print(void)
{
printf("----------------------------------------------\n");
slovechka* point;
int i;
for (i = 0, point = list; i < max; i++, point++)
{
printf("|%-3d|%-20s|\n", i + 1, point->words);
}
printf("----------------------------------------------\n");
}
int cmp(const void* a, const void* b)
{
return *(int*)a - *(int*)b;
}
void Sort(void)
{
qsort(list->words,max,sizeof(slovechka), (int (*)(const void*, const void*)) strcmp);
}
void quicksort(char h[], int size, int left, int right)
{
int i = left;
int j = right;
char pivot = h[(left + right) / 2];
char temp;
while (i <= j)
{
while (h[i] < pivot) i++;
while (h[j] > pivot) j--;
if (i <= j)
{
temp = h[i];
h[i] = h[j];
h[j] = temp;
i++;
j--;
}
}
if (i < right)
quicksort(h, size, i, right);
if (j > left)
quicksort(h, size, left, j);
}