Создание quicksort с указателями

Эй im пытается сделать функцию быстрой сортировки с указателями, im довольно ограничен в знании указателя. I’M receiving a segmentation-fault for the code, I know that means im trying to map values out of my array range but i cant seem to solve the issue. Любая помощь будет оценена! Даже если вы не хотите отвечать на него, указывая мне в правильном направлении, всегда ценится!

У меня есть основная функция, где это вызывается и инициализируется.

#include <stdio.h>
#include <time.h>
#include <math.h>
#include<ctype.h>
#include <stdlib.h>
#include <stdbool.h>

void quicksort_time(int *first,int *last){
int *pivot,*j,*temp,*i;
// The Quick Sorting algorithim is below! 
 if(first<last){
     *pivot=*first;
     *i=*first;
     *j=*last;

     while(i<j){
         while(i<=pivot&&i<last)
             i++;
         while(j>pivot)
             j--;
         if(i<j){
             *temp=*i;
              *i=*j;
              *j=*temp;
         }
     }

     *temp=*pivot;
     *pivot=*j;
     *j=*temp;
     quicksort_time(first,j-1);
     quicksort_time(j+1,last);

    }
}

1 ответ

  1. Включите предупреждения компилятора!

    foo.c: In function ‘quicksort_time’:
    foo.c:12:12: warning: ‘pivot’ may be used uninitialized in this function [-Wmaybe-uninitialized]
          *pivot=*first;
                ^
    foo.c:13:8: warning: ‘i’ may be used uninitialized in this function [-Wmaybe-uninitialized]
          *i=*first;
            ^
    foo.c:14:8: warning: ‘j’ may be used uninitialized in this function [-Wmaybe-uninitialized]
          *j=*last;
            ^
    foo.c:22:19: warning: ‘temp’ may be used uninitialized in this function [-Wmaybe-uninitialized]
                  *temp=*i;
                       ^