gpt4 book ai didi

java - 为什么这段快速排序代码中数组的前 8 个元素会变成 1,2,3,4,5,6,7,8?

转载 作者:行者123 更新时间:2023-12-01 18:36:34 24 4
gpt4 key购买 nike

由于某种原因,代码打印出来:

1
2
3
4
5
6
7
8
sortedNum
sortedNum

排序后,我似乎找不到错误。这种情况每次都会发生,而且正如我所见,ArrayList 并不每次都包含数字 1-8。

import java.util.*;
public class QuickSortRunner {
public static void main(String[] args)
{
ArrayList<Integer> arr = new ArrayList<Integer>();
for(int n = 0; n<10;n++)
{
int x = (int)(Math.random()*101)+1;
arr.add(x);
}

for(int x=0;x<10;x++)
{
System.out.println(arr.get(x));
}
//int size = arr.size();
partition(arr,0,arr.size()-1);

for(int x=0;x<10;x++)
{
System.out.println(arr.get(x));
}
}


public static void partition(ArrayList<Integer> arr, int lower, int upper)
{
int u=upper, l=lower;
if(u<l)
{
return;
}
int rand = (int)(Math.random()*(upper-lower)+lower);
int pivot = arr.get(rand);
while(l<=u)
{
while(arr.get(l)<pivot)
{
l = l+1;
}
while(arr.get(u)>pivot)
{
u=u-1;
}
if(l<=u)
{
int temp = arr.get(l);
arr.set(l,u);
arr.set(u,temp);
l++;
u--;
}
if(lower<u)
{
partition(arr,lower,u);
}
if(l<upper)
partition(arr,l,upper);
}
}
}

最佳答案

我不确定这是否是唯一的问题,但有一个问题是

arr.set(l,u);

应该是

arr.set(l, arr.get(u));

关于java - 为什么这段快速排序代码中数组的前 8 个元素会变成 1,2,3,4,5,6,7,8?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21747324/

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