2015-03-17 3 views
0

Привет, я пытаюсь создать сортировку сортировки, но, по-видимому, она проходит только один раз первый отладочный текст отображает это 3,2,10,9,5, что является правильным , тогда во втором отображении отладки это 2,0,0,0,0 и последний отображает эту 3,0,10,9,5,Выбор сортировки только один раз

, как вы можете видеть это только появляется идти, хотя цикл один раз вместо 4 раз, что я говорю ему, что я делаю неправильно?

int[] List = new int[] {3, 2, 10, 9, 5};//List 
    int[] ListB = new int[] {0, 0, 0, 0, 0};//ListB 

    Debug.Log(List[0] + ","+List[1] + ","+List[2] + ","+List[3] + ","+List[4] + ","); 
    int minimum,temp;//2 new ints 

    for (int outer = 0; outer < List.Length-1; outer++)//Loop for 0 to number of ints in list -1 
    { 
     minimum = outer;//set minimum to outer 

     for (int inner = 0; inner < List.Length; inner++)//loop for how many ints are in the list 
     { 
      if (List[inner] < List[minimum])// if list inner < list minimum 
      { 
       minimum = inner;//set minimum to inner 
      }           
     } 
     ListB[outer] = List[minimum];//listb outer = list minimum 
     List[minimum] = 0;//set the list minimum to a dummy value 
    } 
    Debug.Log(ListB[0] + ","+ListB[1] + ","+ListB[2] + ","+ListB[3] + ","+ListB[4]); 
    Debug.Log(List[0] + ","+List[1] + ","+List[2] + ","+List[3] + ","+List[4] + ","); 
+0

после добавления еще пару отладочных в нем делает появляться, чтобы сделать Orignal петлю в 4 раза, как это должно – pvtctrlalt

+0

нормально, так что петли в 4 раза и делает первый своп во второй массив, но после того, что он просто останавливается заменяя их в – pvtctrlalt

ответ

1

при установке списка [минимальный] 0, в следующий раз цикл выполнения будет найти 0 в качестве минимального значения у вас есть еще одна вещь, чтобы заметить, первый цикл должен закончиться в list.length это истинный код

int[] List = new int[] { 3, 2, 10, 9, 5 };//List 
     int[] ListB = new int[] { 0, 0, 0, 0, 0 };//ListB 

     Debug.log(List[0] + "," + List[1] + "," + List[2] + "," + List[3] + "," + List[4] + ","); 
     int minimum, temp;//2 new ints 

     for (int outer = 0; outer < List.Length ; outer++)//Loop for 0 to number of ints in list -1 
     { 
      minimum = outer;//set minimum to outer 

      for (int inner = 0; inner < List.Length; inner++)//loop for how many ints are in the list 
      { 
       if (List[inner] < List[minimum])// if list inner < list minimum 
       { 
        minimum = inner;//set minimum to inner 
       } 
      } 
      ListB[outer] = List[minimum];//listb outer = list minimum 
      List[minimum] = int.MaxValue;//set the list minimum to a dummy value 
     } 
     Debug.log(ListB[0] + "," + ListB[1] + "," + ListB[2] + "," + ListB[3] + "," + ListB[4]); 
     Debug.log(List[0] + "," + List[1] + "," + List[2] + "," + List[3] + "," + List[4] + ","); 
+0

Просто измените int.max на эквивалент в вашем программировании langua ge @pvtctrlalt –

+0

спасибо большое alloush, я не был уверен, что положить в список [минимальная] часть, как псевдокод, я работал только с указанным фиктивным значением, поэтому я положил 0 спасибо за то, что – pvtctrlalt

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