Быстрая сортировка с указателями - C (СИ)
Формулировка задачи:
Здрауствуйте, подскажите пожадуйста, я сделал быструю сортировку с указателями, оно вроде работет - сортирует, но 1 елемент куда-то пропадает и вместо него появляется 0. Я не знаю почему так, уже всё посмотрел. Вот мой код, заранее спасибо.
#include <stdio.h> #include <stdlib.h> #include <time.h> #include <windows.h> #define SIZE 9 int arr[SIZE]; void qsort(int *l, int *r) { printf("\n"); for (int i = 0; i < SIZE; i++) { printf("%d ", arr[i]); } printf("\n"); int size = (r - l); int middle = size / 2; int *i = l; int *j = r; int tmp=999; while (i <= j) { while (*i < *(i + middle)) i++; while (*j > *(j - middle)) j--; if (i <= j) { tmp = *i; *i = *j; *j = tmp; i++; j--; } if (i < r) { printf("Left\n"); qsort(i, r); } if (l < j) { printf("Right\n"); qsort(l, j); } } } int main() { SetConsoleCP(1251); SetConsoleOutputCP(1251); srand(time(NULL)); int *begin = arr; int *end = arr + SIZE; for (begin = arr, end = arr + SIZE; begin < end; begin++) { *begin = rand() % 10 + 1; } for (begin = arr, end = arr + SIZE; begin < end; begin++) { printf("%d ", *begin); } printf("\n"); begin = arr; qsort(begin, end); printf("\n"); for (begin = arr, end = arr + SIZE; begin < end; begin++) { printf("%d ", *begin); } printf("\n"); system("pause"); }
Решение задачи: «Быстрая сортировка с указателями»
textual
Листинг программы
qsort(begin, end);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д