2014-12-14 4 views
-1

Я пытаюсь написать рекурсивный выбор сортировки, и я действительно смущен, и его действительно сложно отслеживать, почему это не работает. Если бы кто-нибудь мог сказать мне, где проблема, это было бы здорово!Рекурсивный выбор Сортировка

Вот мой код

def selectionSortRecursive(lis, minIndex = 0): 
    if minIndex - 1 == len(lis): 
     return lis 
    minValueIndex = minIndex #Assigns the very first item in the list as the minimum value index 
    for i in range (minIndex + 1, len(lis)): 
     if lis[i] < lis[minValueIndex]: #if any item is less than min value, its index gets assigned the minimum value 
      minValueIndex = i 
    lis[minIndex], lis[minValueIndex] = lis[minValueIndex], lis[minIndex] #After you go through the list, you switch the smallest item into the minimum index, which starts off being 0 
    lis = selectionSortRecursive(lis, minIndex+1) #now we're gonna sort the list at the next min 
    return lis 

ответ

0

Пожалуйста, попробуйте эту модификацию:

def selectionSortRecursive(lis, minIndex = 0): 
    if minIndex - 1 == len(lis): 
     return lis 
    minValueIndex = minIndex #Assigns the very first item in the list as the minimum value index 
    for i in range (minIndex + 1, len(lis)): 
     if lis[i] < lis[minValueIndex]: #if any item is less than min value, its index gets assigned the minimum value 
      lis[minValueIndex], lis[i] = lis[i], lis[minValueIndex] #After you go through the list, you switch the smallest item into the minimum index, which starts off being 0 
    lis = selectionSortRecursive(lis, minIndex+1) #now we're gonna sort the list at the next min 
    return lis 
0

Попробуйте это.

static int maxIndex; 
    public static void selectionSort(Object[] source, int fromIndex, int endIndex){ 
     if(endIndex==fromIndex){ 
      return; 
     } 
     else{ 
      if(((Comparable) source[fromIndex]).compareTo(source [maxIndex])>0){ 
       maxIndex=fromIndex; 
      } 
      bubbleSort(source,fromIndex+1,endIndex); 
     } 
     Object temp=source[fromIndex]; 
     source[fromIndex]=source[maxIndex]; 
     source[maxIndex]=temp; 
     bubbleSort(source,fromIndex,endIndex-1); 
    } 
Смежные вопросы