选择排序只通过一次
Selection sort only passing once
您好,我正在尝试创建一个选择排序,但它似乎只通过一次
第一个调试显示这个
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] + ",");
当你将list[minimum]设置为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] + ",");
您好,我正在尝试创建一个选择排序,但它似乎只通过一次 第一个调试显示这个 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] + ",");
当你将list[minimum]设置为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] + ",");