2016-05-06 12 views
0

Hey ich versuche, eine schnelle Sortierfunktion mit Zeigern zu machen, im Zeigerwissen ziemlich begrenzt. Ich erhalte einen Segmentierungsfehler für den Code. Ich weiß, dass ich versuche, Werte außerhalb meines Array-Bereichs abzubilden, aber ich kann das Problem nicht lösen. Jede Hilfe wäre willkommen! Auch wenn du es nicht beantworten willst, es wird immer geschätzt, wenn du mich in die richtige Richtung zeigst!Quicksort mit Zeigern machen

Ich habe eine Hauptfunktion, wo dies aufgerufen wird und es initialisiert wird.

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

    } 
} 

Antwort

0

Schalten Sie die Compiler-Warnungen ein!

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; 
       ^