计数排序

2020-08-03  本文已影响0人  cg1991

个人主页:https://chengang.plus/

文章将会同步到个人微信公众号:Android部落格

1.1 描述

1.2 代码

package com.chuck.algorithmproject.sort;

import android.util.Log;

import java.util.Arrays;

public class CountSort {
    private static String TAG = "CountSort";
    private static int[] number = {5, 8, 3, 6, 9, 10, 34, 3, 7, 6};

    public static void countSort() {
        int maxNumber = number[0];
        int minNumber = maxNumber;
        int size = number.length;
        for (int index = 0; index < size; index++) {
            if (number[index] > maxNumber) {
                maxNumber = number[index];
            }
            if (number[index] < minNumber) {
                minNumber = number[index];
            }
        }
        Log.e(TAG, "maxNumber:" + maxNumber + ",minNumber:" + minNumber);
        int tempArraySize = maxNumber - minNumber + 1;
        int[] tempArray = new int[tempArraySize];
        for (int index = 0; index < size; index++) {
            ++tempArray[number[index] - minNumber];
        }
        int originNumberIndex = 0;
        for (int index = 0; index < tempArraySize; index++) {
            while (tempArray[index] != 0) {
                number[originNumberIndex++] = index + minNumber;
                --tempArray[index];
            }
        }
        Log.e(TAG, "sorted number is " + Arrays.toString(number));
    }
}

1.3 总结

示意图如下:

计数排序.jpg
上一篇下一篇

猜你喜欢

热点阅读