用于梳子排序的 Java 程序


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("The original array contains ");
      System.out.println(Arrays.toString(nums));
      ob.comb_sort(nums);
      System.out.println("The sorted array is ");
      System.out.println(Arrays.toString(nums));
   }
}

输出

The original array contains
[6, 78, 90, -12, -45, 0, -1, 45]
The sorted array is
[-45, -12, -1, 0, 6, 45, 78, 90]

一个名为 Demo 的类中包含有 ‘comb_sort’ 函数。在此,数组的长度被定义,如果这个长度大于 1,将定义一个新的 ‘len_gap’,它等于数组长度除以 1.3f。

对这个数组进行迭代并将数组中的元素进行比较,如果元素大于该元素加上一个指定的 ‘len_gap’,那么这两个元素将互换。之后,对这些元素执行一次简单的冒泡排序。在主函数中,对数组进行定义并定义一个 Demo 类的实例,然后在数组上调用 ‘comb_sort’ 函数。

更新时间: 04-Jul-2020

199 浏览

开启你的职业生涯

完成课程即可获得认证

开始
广告