gpt4 book ai didi

java - 冒泡排序对间隙排序的修改

转载 作者:行者123 更新时间:2023-12-01 15:27:34 28 4
gpt4 key购买 nike

我遇到了一个问题,需要你的指导。基本上我设法创建了这个冒泡排序方法。我如何将其修改为间隙排序,而不是每次通过列表比较相邻元素,而是比较相隔一些 number(i) 个位置的元素,其中 (i) 是小于 n 的整数。例如,第一个元素将与 (i + 1) 个元素进行比较,第二个元素与 (i + 2) 个元素进行比较,第 n 个元素与 (n-i) 个元素进行比较,等等。当所有元素都比较时,一次迭代完成可以比较的,已经比较过的。在下一次迭代中,i 被减少某个大于 1 的数字,并且该过程继续,直到 i 小于 1

public static void bubbleSort (Comparable[] data, int maxlength){
int position, scan;
Comparable temp;

for (position = maxlength; position >= 1; position--){
for (scan = 0; scan <= position – 1; scan++){
if (data[scan].compareTo(data[scan+1]) > 0){
// Swap the values
temp = data[scan];
data[scan] = data[scan + 1];
data[scan + 1] = temp;
}
}
}
}

最佳答案

此代码(位于 http://www.daniweb.com/software-development/java/threads/238791/gap-sort )可能对您有帮助:

public static void gapSort (Comparable [] data, int size) {  
int index;
int gap, top;
Comparable temp;
boolean exchanged;

double SF = 1.3;
gap = size;

do {
exchanged = false;
gap = (int) (gap / SF);
if (gap == 0){
gap = 1;
}
for (index = 1; index <= size - gap; index++) {
if (data [index].compareTo(data [index + gap]) > 0) {
temp = data [index];
data [index] = data [index + gap];
data [index + gap] = temp;
exchanged = true;
}
}
} while (exchanged || gap > 1);
}

请记住,对实现 Comparable 接口(interface)的对象数组进行排序的最简单方法通常是 Arrays.Sort()

关于java - 冒泡排序对间隙排序的修改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9988405/

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