嘿伙计们,所以我必须在我的.txt
文件中找到填充了未分类素数的数组中的最后10个元素。我遇到的问题是我用来获取最后10个元素的代码只返回相同的数字而不是最后的10个数字。如果有人能帮助我弄清楚这会很棒。
我也看了一些其他代码来弄明白,但我没有运气。如果您确实回答,请不要回答其他人代码的链接。感谢
到目前为止我的代码:
public class BubbleSort {
static long BubbleSortCount = 0;
public static void main(String[] args) throws IOException {
System.out.print("This program compares the bubble, selection, merge sorts.\n"
+ "The data set is 78498 unsorted integers (prime numbers less than 1,000,000)\n\n");
File file = new File("primes1.txt");
Scanner infile = new Scanner(file);
ArrayList<Integer> Primes1 = new ArrayList<Integer>();
int temp;
long startTime, endTime;
int n;
while (infile.hasNextInt()) {
n = infile.nextInt();
Primes1.add(n);
}
// bubble
System.out.print("BUBBLE SORT\n");
System.out.println("\nPrimes Read : " + Primes1.size());
startTime = System.currentTimeMillis();
Primes1 = Bubble(Primes1);
endTime = System.currentTimeMillis();
System.out.println("Elapsed Seconds = "
+ (double) ((endTime - startTime) / 1000.0));
System.out.println("iterations = " + BubbleSortCount++);
System.out.print("First 10 sorted : ");
for (int i = 0; i < 10; i++) {
System.out.print(Primes1.get(i) + " ");
}
System.out.println();
System.out.print("Last 10 sorted : ");
for (int i = 0; i < 10; i++) {
System.out.print(Primes1.get(Primes1.size() - 1) + " ");
}
}
// Bubble sort Method
public static ArrayList<Integer> Bubble(ArrayList<Integer> Primes1) {
int temp;
for (int i = 0; i < Primes1.size() - 1; i++) {
for (int j = 0; j < Primes1.size() - 1; j++) {
BubbleSortCount++;
if (Primes1.get(j) > Primes1.get(j + 1)) {
temp = Primes1.get(j);
Primes1.set(j, Primes1.get(j + 1));
Primes1.set(j + 1, temp);
}
}
}
return Primes1;
}
}
以下是我的.txt文件中的数字。
7 2 47 13 11 59 17 41 37 23 29 31 19 53 43 241 251 257 263 269 271 277 281 283 293
答案 0 :(得分:0)
System.out.print(Primes1.get(Primes1.size() - 1) + " ");
使用1将始终采用相同的数字,应该修复
System.out.print(Primes1.get(Primes1.size() - i) + " ");
答案 1 :(得分:0)
你获得相同数字的原因是你永远不会使用for循环中的索引来获得最后的数字。
此:
System.out.print("Last 10 sorted : ");
for (int i = 0; i < 10; i++) {
System.out.print(Primes1.get(Primes1.size() - 1) + " ");
}
必须更改才能使用循环索引变量。这应该这样做:
System.out.print("Last 10 sorted : ");
for (int i = 0; i < 10; i++) {
System.out.print(Primes1.get(Primes1.size() - 10 + i) + " ");
}
另一种方法是使用 List 界面中的sublist方法生成一个包含10个最后元素的新列表,如下所示:
List<Integer> last10list = Primes1.subList(Primes1.size() - 11, Primes1.size());
答案 2 :(得分:0)
变化:
for (int i = 0; i < 10; i++) {
System.out.print(Primes1.get(Primes1.size() - 1) + " ");
}
要:
for (int i = 0; i < 10; i++) {
System.out.print(Primes1.get(Primes1.size() - (i+1)) + " ");
}
或者:
for (int i = 1; i <= 10; i++) {
System.out.print(Primes1.get(Primes1.size() - i) + " ");
}