gpt4 book ai didi

java - 选择排序不在Java中排序

转载 作者:塔克拉玛干 更新时间:2023-11-01 23:08:33 24 4
gpt4 key购买 nike

很抱歉,如果我问了太多问题,希望我能在这个网站上提供帮助。我正在尝试创建一个选择排序,但在排序方面没有运气。

import java.util.Random;

public class Tester {
public static void main(String[] args) {
selectionSort(args);
}

private static void printArray(int[] anArray) {
for (int i = 0; i < anArray.length; i++) {
if (i > 0) {
System.out.print(", ");
}
System.out.print(anArray[i]);
}
}

public static void selectionSort(String[] args) {

int i,n = 0,x = 0;

int l = 10;
int temp;
Random r = new Random();
int array[] = new int[l];
for(i = 0;i < l; i++){
array[i] = r.nextInt(271);
}

printArray(array);
while(n < l){

for(int j=0; j<l; j++){
if(array[j] < array[x])
x = j;

}
temp = array[x];
array[x] = array[n];
array[n] = temp;
n++;
x = n;
}
printArray(array);
}

}

我觉得我的大部分问题都来自

     for(int j=0; j<l; j++){
if(array[j] < array[x])
x = j;

}
temp = array[x];
array[x] = array[n];
array[n] = temp;
n++;
x = n;
}

我无法弄清楚这个底部。我可以对最小的数字进行排序,但它的顺序很奇怪。我认为 x 不断变化,我需要保持它的顺序,所以我让它等于 n。在那之后不工作我不知所措。感谢您的帮助。

最佳答案

你做的循环部分不正确,所以这样做:

 for(int j=0; j<l; j++){
if(array[j] < array[x])
x = j;

}

而不是这个:

for(int j=x+1; j<l; j++)
if(array[j] < array[x])
x = j;

请注意,选择排序的每个循环都应从完成其部分的最后一个元素的下一个开始。

关于java - 选择排序不在Java中排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35191198/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com