Быстрая сортировка с указателями - 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);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.4 из 5