gpt4 book ai didi

java - 数组越界冒泡排序

转载 作者:行者123 更新时间:2023-12-01 11:41:35 24 4
gpt4 key购买 nike

我不断收到索引越界错误,但我不知道为什么。我觉得它不应该超出范围,因为对的数量比开始的列表元素的数量少一。

这是我的代码:

`

    package main;

import java.util.Random;

import java.io.File;
import java.io.IOException;

import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;

import jxl.read.biff.BiffException;

import jxl.write.Label;
import jxl.write.Number;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;

public class BubbleSort
{

static int Bubble_Sort_return_int (int[] list, int n)
{
int comparison_count = 0;
int number_pairs = n -1;
boolean swapped_elements = true;
while (swapped_elements == true)
{

for (int i = 1; i < number_pairs ; i++)
{
swapped_elements = false;
comparison_count++;
if (list[i] > list[i-1])
{
int swap_element = list[i -1];
list[i-1] = list[i];
list[i] = swap_element;
swapped_elements = true;
}
}

number_pairs = number_pairs - 1;
}
return comparison_count;
}

public static void main (String args[])throws IOException, WriteException
{
Random one_to_ten = new Random();
int list [][] = new int[1000][1000];
int[] comparison_count_list_after_one_pass = new int[1000];
for (int i = 0; i < 1000; i++)
{
for (int j = 0; j < i+1; j++)
{
list[i][j] = one_to_ten.nextInt(10);
}
}
for (int i = 0; i < 1000; i++)
{
comparison_count_list_after_one_pass[i] = Bubble_Sort_return_int(list[i], i + 1);
}
}
}

最佳答案

你的逻辑有缺陷Bubble_Sort_return_int 。第一次调用,n等于 1 ,和number_pairs等于 0 。 for 循环 ( i < number_pairs ) 中的比较失败并且 number_pairs减至-1 。这一直持续到 number_pairs-2147483648 递减至2147483647 。只有这样,for 循环才会执行任何操作。在循环中 i 的位置等于 1000 , list[i]导致 ArrayIndexOutOfBoundsException 异常。

关于java - 数组越界冒泡排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29479353/

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