摘要:排序之計(jì)數(shù)排序計(jì)數(shù)排序思路計(jì)數(shù)排序適用于有明確范圍的數(shù)組,比如給定一個數(shù)組,且知道所有值得范圍是。這個時(shí)候可以使用一個長度的數(shù)組,待排序的數(shù)組就可以散在這個數(shù)組上,數(shù)組的值就是當(dāng)前值的個數(shù),再經(jīng)過一次遍歷展開,得到的數(shù)組就有序了。
Java排序之計(jì)數(shù)排序 1. 計(jì)數(shù)排序思路
計(jì)數(shù)排序適用于有明確范圍的數(shù)組,比如給定一個數(shù)組,且知道所有值得范圍是[m,n]。這個時(shí)候可以使用一個n-m+1長度的數(shù)組,待排序的數(shù)組就可以散在這個數(shù)組上,數(shù)組的值就是當(dāng)前值的個數(shù),再經(jīng)過一次遍歷展開,得到的數(shù)組就有序了。
新建一個長度為n-m+1的臨時(shí)數(shù)組
遍歷待排序數(shù)組,它的值-m作為臨時(shí)數(shù)組下角標(biāo),這個位置的值加1
遍歷結(jié)束,臨時(shí)數(shù)組就存儲了每個值得個數(shù)
最后將它展開賦值給原數(shù)組
2. Java代碼實(shí)現(xiàn)package com.wangjun.arithmetic; import java.util.Arrays; public class SortCount { public static void main(String[] args) { //測試 int[] arr = {1,4,6,7,5,4,3,2,1,4,5,10,9,10,3}; sortCount(arr, 1, 10); System.out.println(Arrays.toString(arr)); } //計(jì)數(shù)排序的初步實(shí)現(xiàn),使用了多余的空間,可以嘗試不使用多余的空間 public static void sortCount(int[] arr, int m, int n) { int len = arr.length; int[] tem = new int[n - m + 1]; for(int i = 0; i < len; i++) { tem[arr[i] - m] += 1; } for(int i = 0, index = 0; i < tem.length; i++) { int item = tem[i]; while(item-- != 0) { arr[index++] = i + m; } } } }
打印結(jié)果:
[1, 1, 2, 3, 3, 4, 4, 4, 5, 5, 6, 7, 9, 10, 10]
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/69635.html
摘要:計(jì)數(shù)排序首先我們要對計(jì)數(shù)排序有一個正確的認(rèn)識計(jì)數(shù)排序是用于確定范圍的整數(shù)的線性時(shí)間排序算法這一句話我們就可以知道計(jì)數(shù)排序該如何用了處理數(shù)據(jù)確定范圍內(nèi)的整數(shù)特點(diǎn)快線性時(shí)間其數(shù)據(jù)如下最佳情況最差情況平均情況計(jì)數(shù)排序的步驟如下查找待排序數(shù)組中最大 計(jì)數(shù)排序 首先我們要對計(jì)數(shù)排序有一個正確的認(rèn)識,計(jì)數(shù)排序是用于確定范圍的整數(shù)的線性時(shí)間排序算法,這一句話我們就可以知道計(jì)數(shù)排序該如何用了.處理數(shù)據(jù)...
摘要:計(jì)數(shù)排序之前接觸的選擇快排等算法,都是著眼于怎么更快的調(diào)整元素位置,以達(dá)到排序的目的。桶排序桶排序能解決浮點(diǎn)數(shù)字的問題,至于槽大嘛,依然深受其害。思路桶排序與計(jì)數(shù)排序的思路多少有些類似,有數(shù)組整裝待排,還是一如既往的從小到大好了。 計(jì)數(shù)排序 之前接觸的選擇、快排等算法,都是著眼于怎么更快的調(diào)整元素位置,以達(dá)到排序的目的。而計(jì)數(shù)排序則不然,設(shè)計(jì)思路可謂另辟蹊徑! 思路 我們對15個10以...
摘要:將大的先放在后面,再下一次可以把相同大的放在上一次的之前,順序改變。 之前介紹的排序算法: 【算法】插入排序——希爾排序+直接插入排序_Rinne’s blog-C...
摘要:結(jié)構(gòu)型模式適配器模式橋接模式裝飾模式組合模式外觀模式享元模式代理模式。行為型模式模版方法模式命令模式迭代器模式觀察者模式中介者模式備忘錄模式解釋器模式模式狀態(tài)模式策略模式職責(zé)鏈模式責(zé)任鏈模式訪問者模式。 主要版本 更新時(shí)間 備注 v1.0 2015-08-01 首次發(fā)布 v1.1 2018-03-12 增加新技術(shù)知識、完善知識體系 v2.0 2019-02-19 結(jié)構(gòu)...
摘要:代碼實(shí)現(xiàn)六堆排序算法簡介堆排序是指利用堆這種數(shù)據(jù)結(jié)構(gòu)所設(shè)計(jì)的一種排序算法。九計(jì)數(shù)排序算法簡介計(jì)數(shù)排序是一種穩(wěn)定的排序算法。計(jì)數(shù)排序不是比較排序,排序的速度快于任何比較排序算法。 贊助我以寫出更好的文章,give me a cup of coffee? 2017最新最全前端面試題 1、插入排序 1)算法簡介 插入排序(Insertion-Sort)的算法描述是一種簡單直觀的排序算法。它...
閱讀 2595·2021-09-30 09:48
閱讀 2593·2019-08-30 14:10
閱讀 2743·2019-08-29 11:22
閱讀 1863·2019-08-26 13:51
閱讀 2300·2019-08-26 12:02
閱讀 2446·2019-08-23 16:06
閱讀 3584·2019-08-23 14:06
閱讀 1117·2019-08-23 13:56