gpt4 book ai didi

java - 插入排序——降序

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:26:38 25 4
gpt4 key购买 nike

抱歉,如果这是一个基本问题...

我只是想学习更多关于算法的知识...

我写了一个简单的代码来按升序执行插入排序,但由于某种原因我无法使其按降序执行排序。

我尝试将比较键 (while (i > 0 && a[i] > key) 更改为 (i > 0 && a[i] < key)).. 它似乎部分工作但第一个元素不是排序后,我得到以下结果。有人可以告诉我哪里错了吗?

1111095个4个3个2

public class InsertionSort {
public static void main(String args[]) {
int[] a = { 1,10,11,5, 9, 3, 2, 4 };
// Loop through the entire array length. Consider you already have one
// element in array, start comparing with
// first element
for (int j = 1; j < a.length; j++) {
// Get the key (The value that needs to be compared with existing
// values.
int key = a[j];
// Get the array index for comparison, we need to compare with all
// other elements in the array with
// key
int i = j - 1;
// While i > 0 and when key is less than the value in the array
// shift the value and insert
// the value appropriately.
//System.out.println(j);
while (i > 0 && a[i] < key) {
a[i + 1] = a[i];
i = i - 1;
a[i + 1] = key;
}
}
for (int k = 0; k < a.length; k++) {
System.out.println(a[k]);
}
}
}

最佳答案

你永远不会在

中触摸 a[0]
while (i > 0 && a[i] < key) {

所以它没有被分类到应有的位置。使用 >= 而不是 >:

while (i >= 0 && a[i] < key) {

升序排序也会出现同样的问题。

关于java - 插入排序——降序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15297997/

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