Java 梳状排序程序
javaobject oriented programmingprogramming更新于 2025/7/7 2:52:17
Java 中的梳状排序会消除位于列表末尾的较小值,并将反转逐一删除。让我们看一个例子 −
示例
import java.util.Arrays;
public class Demo{
void comb_sort(int nums[]){
int len_gap = nums.length;
float shrink_val = 1.3f;
boolean swap = false;
while (len_gap > 1 || swap) {
if (len_gap > 1) {
len_gap = (int)(len_gap / shrink_val);
}
swap = false;
for (int i = 0; len_gap + i < nums.length; i++){
if (nums[i] > nums[i + len_gap]) {
swap(nums, i, i + len_gap);
swap = true;
}
}
}
}
private static void swap(int nums[], int x, int y) {
Integer temp = nums[x];
nums[x] = nums[y];
nums[y] = temp;
}
public static void main(String args[]){
Demo ob = new Demo();
int nums[] = {6, 78, 90, -12, -45, 0, -1, 45};
System.out.println("原始数组包含");
System.out.println(Arrays.toString(nums));
ob.comb_sort(nums);
System.out.println("排序后的数组为");
System.out.println(Arrays.toString(nums));
}
}
输出
原始数组包含 [6, 78, 90, -12, -45, 0, -1, 45] 排序后的数组为 [-45, -12, -1, 0, 6, 45, 78, 90]
名为 Demo 的类包含 ‘comb_sort’ 函数。这里定义了数组的长度,如果此长度大于 1,则定义一个新的 ‘len_gap’,即数组长度除以 1.3f。
迭代此数组并比较数组中的元素,如果元素大于元素加上特定的 ‘len_gap’,则交换元素。之后对元素进行简单的冒泡排序,在主函数中定义数组,定义Demo类的实例,对数组调用‘comb_sort’函数。
相关文章
有用资源
java 参考教程 - 该教程包含有关 java 的更多信息:https://www.cainiaomax.com/java/

