您好,欢迎访问一九零五行业门户网

梳排序是什么意思?梳排序的使用方法

梳排序的知名度远没有其他排序算法那么高,它是在冒泡排序的基础上做的改进,引入类似“步长”以及“子序列”概念,这两个概念在后面的排序算法中会经常提及。
待排序列:{10, 2, 11, 8, 7} groupnums = length = 5
步长系数(分组系数)coefficient = 1.3
排序过程如下图所示。
java
 1 package com.algorithm.sort; 2  3 import java.util.arrays; 4  5 /** 6  * 梳排序 7  * created by 余林丰 on 2017/6/20. 8  */ 9 public class comb {10     public static void main(string[] args) {11         int[] nums = {10, 2, 11, 8, 7};12         nums = combsort(nums);13         system.out.println(arrays.tostring(nums));14     }15     16     /**17      * 梳排序18      * @param nums 待排序数组19      * @return 排好序的数组20      */21     private static int[] combsort(int[] nums) {22         float cofficient = 1.3f;    //步长系数(分组系数) = 1.3,大量试验获得的最佳值23         int groupnums = nums.length;24         boolean flag = false;25         while (groupnums > 1 || flag) {26             groupnums = (int) ((groupnums / cofficient) > 1 ? (groupnums / cofficient) : 1);27             flag = false;28             for (int i = 0; i + groupnums < nums.length; i++) {29 if (nums[i] > nums[i + groupnums]) {30                     int temp = nums[i];31                     nums[i] = nums[i + groupnums];32                     nums[i + groupnums] = temp;33                     flag = true;34                 }35             }36         }37         return nums;38     }39 }
python3
 1 #梳排序 2 def comb_sort(nums): 3     cofficient = 1.3        #最佳系数 4     groupnums = len(nums) 5     flag = false 6     while groupnums > 1 or flag: 7         groupnums = int(groupnums / cofficient) if (groupnums / cofficient) > 1 else 1 8         flag = false 9         for i in range(len(nums)):10             if i + groupnums >= len(nums):11                 break12             if nums[i] > nums[i + groupnums]:13                 temp = nums[i]14                 nums[i] = nums[i + groupnums]15                 nums[i + groupnums] = temp16                 flag = true17         18     return nums19 20 nums = [10, 2, 11, 8, 7]21 nums = comb_sort(nums)22 print(nums)
以上就是梳排序是什么意思?梳排序的使用方法的详细内容。
其它类似信息

推荐信息