gpt4 book ai didi

java - 希尔排序不对数组的第一个元素进行排序

转载 作者:行者123 更新时间:2023-12-02 10:45:59 25 4
gpt4 key购买 nike

当我对此数据 {7,8,4,2,3,9,5,8,4,1} 运行排序时,只有第一个元素没有放置在正确的位置。我怎样才能解决这个问题?感谢您的帮助。

public void segmentedInsertionSort(int[] array, int size, int h)
{
int temp;

for(int i = h + 1 ;i < size;i++)
{
int j = i - h;


while(j > 0)
{
if(array[j+h] < array[j])
{
temp = array[j];
array[j] = array[j+h];
array[j+h] = temp;
j = j - h;
}
else
{
j = 0;
}
}
}
}

public void shellSort(int[] array, int size)
{
int h = size/2;

while(h > 0)
{
segmentedInsertionSort(array,size,h);
h = h/2;
}
}

最佳答案

for(int i = h + 1 ;i < size;i++)
{
int j = i - h;


while(j > 0)
{
if(array[j+h] < array[j])
{
temp = array[j];
array[j] = array[j+h];
array[j+h] = temp;
j = j - h;
}

在这部分中,您定义 i = h + 1,然后增加 i 值。因此,当排序运行时,j 值永远不会小于 1。因此,它从不处理数组的第一个元素。您需要修复这部分。

关于java - 希尔排序不对数组的第一个元素进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52572157/

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