2016-02-02 2 views
0

, так что это мой первый раз, размещая что-нибудь в StackOverflowQuicksort алгоритм не работает

я пытался реализовать алгоритм быстрой сортировки, но когда я скомпилировать код и попробуйте запустить его висит

так это код

#include <iostream> 
using namespace std; 

void swap(int& num1,int& num2) 
{ 
    int temp = num2; 
    num2 = num1; 
    num1 = temp; 
} 

int partitionTest(int arr[],int p,int r) 
{ 
    int i = p; 
    for(int j =p ;j<r-1;j++) 
    { 
     if(arr[j]> arr[r-1]) 
     { 
      i++; 
      swap(arr[j],arr[r-1]); 
     } 
     swap(arr[i],arr[r]); 
     return i; 
    } 
} 

void quicksort(int arr[],int p,int r) 
{ 
    if (p < r) 
    { 
     int temp = partitionTest(arr, p, r); 
     quicksort(arr, p, temp - 1); 
     quicksort(arr, temp + 1, r); 
    } 

} 


int main() 
{ 
    int arr[5]={5,4,3,2,1}; 

    quicksort(arr,0,4); 

    cout << arr[0] << " "; 
    cout << arr[1] << " "; 
} 

я был бы признателен какой-либо помощи

+3

Возможно, вам следует изучить возможность перехода через ваш код с помощью отладчика, чтобы увидеть, где происходит ошибка, и посмотреть на состояние программы в то время. –

+4

Возвращение чего-то в цикле остановит цикл и оставьте метод, и вы вызываете его безоговорочно. – Neil

+1

Вы возвращаетесь на первую итерацию каждого форлупа – Glubus

ответ

1

Три рекурсии в быстрой сортировки(), р = 3 и г = 4. Условие for в параметре partitionTest() говорит, что если j < r-1, который превращается в 3 < 3, и цикл никогда не выполняется. Функция выходит без возвращаемого значения, поэтому temp не определен.

 Смежные вопросы

  • Нет связанных вопросов^_^