2016-05-06 3 views
0

Эй, я пытаюсь сделать быструю сортировку с указателями, им довольно ограничено в знании указателя. Я получаю ошибку сегментации для кода, я знаю, что это означает, что я пытаюсь сопоставить значения за пределами моего диапазона массивов, но я не могу решить эту проблему. Любая помощь будет оценена! Даже если вы не хотите отвечать на него, указывая на меня в правильном направлении, всегда приветствуется!Выполнение quicksort с указателями

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

#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); 

    } 
} 

ответ

0

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

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; 
       ^
Смежные вопросы