学习之鸿蒙&Android学习

Android 算法之排序算法(计数排序)

2021-08-06  本文已影响0人  Kevin_小飞象

计数排序

计数排序(Counting Sort)不是基于比较的排序算法,其核心在于将输入的数据值转化为键存储在额外开辟的数组空间中。 作为一种线性时间复杂度的排序,计数排序要求输入的数据必须是有确定范围的整数。

算法描述

动图演示

07.gif

实例

  1. 代码实现
public class CountingTest {
    public static void main(String[] args) {
        int[] a = {5, 4, 6, 7, 5, 1, 0, 9, 8, 1};
        System.out.println("初始值:");
        printArray(a);
        countSort(a);
        System.out.println("\n排序后:");
        printArray(a);
    }
    
    public static void countSort(int[] arr) {
       int[] count = new int[10];
        for (int i = 0; i < arr.length; i++) {
            count[arr[i]]++; // 计数每个元素出现次数
        }
        int index = 0;
        for (int i = 0; i < count.length; i++) {
            while (count[i] > 0) {
                arr[index++] = i;
                count[i]--;
            }
        }
    }
    
    private static void printArray(int[] a) {
        for (int i = 0;i < a.length;i++) {
            System.out.print(a[i] + " ");
        } 
        System.out.println();
    }
}
  1. 输出结果


    03.png
上一篇下一篇

猜你喜欢

热点阅读