国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > Java > 正文

Java語言實現基數排序代碼分享

2024-07-13 10:14:51
字體:
來源:轉載
供稿:網友

算法思想:依次按個位、十位...來排序,每一個pos都有分配過程和收集過程,array[i][0]記錄第i行數據的個數。

package sorting;/** * 基數排序 * 平均O(d(n+r)),最好O(d(n+r)),最壞O(d(n+r));空間復雜度O(n+r);穩定;較復雜 * d為位數,r為分配后鏈表的個數 * @author zeng * */public class RadixSort {	//pos=1表示個位,pos=2表示十位	public static int getNumInPos(int num, int pos) {		int tmp = 1;		for (int i = 0; i < pos - 1; i++) {			tmp *= 10;		}		return (num / tmp) % 10;	}	//求得最大位數d	public static int getMaxWeishu(int[] a) {		int max = a[0];		for (int i = 0; i < a.length; i++) {			if (a[i] > max)			        max = a[i];		}		int tmp = 1, d = 1;		while (true) {			tmp *= 10;			if (max / tmp != 0) {				d++;			} else			        break;		}		return d;	}	public static void radixSort(int[] a, int d) {		int[][] array = new int[10][a.length + 1];		for (int i = 0; i < 10; i++) {			array[i][0] = 0;			// array[i][0]記錄第i行數據的個數		}		for (int pos = 1; pos <= d; pos++) {			for (int i = 0; i < a.length; i++) {				// 分配過程				int row = getNumInPos(a[i], pos);				int col = ++array[row][0];				array[row][col] = a[i];			}			for (int row = 0, i = 0; row < 10; row++) {				// 收集過程				for (int col = 1; col <= array[row][0]; col++) {					a[i++] = array[row][col];				}				array[row][0] = 0;				// 復位,下一個pos時還需使用			}		}	}	public static void main(String[] args) {		int[] a = { 49, 38, 65, 197, 76, 213, 27, 50 };		radixSort(a, getMaxWeishu(a));		for (int i : a)		      System.out.print(i + " ");	}}

關注一下運行結果:

Java語言,基數排序,代碼分享

總結

以上就是本文關于Java語言實現基數排序代碼分享的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續參閱本站其他Java相關專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 蓬莱市| 自贡市| 旬邑县| 栾川县| 西宁市| 灯塔市| 澄迈县| 达拉特旗| 元朗区| 德江县| 磐安县| 永宁县| 甘泉县| 句容市| 祥云县| 库车县| 天台县| 岗巴县| 伊金霍洛旗| 屏边| 闵行区| 汉源县| 长阳| 广宗县| 龙川县| 武冈市| 封丘县| 太湖县| 张家口市| 黄龙县| 富锦市| 赤峰市| 尼勒克县| 微博| 桑植县| 皮山县| 开化县| 化德县| 墨竹工卡县| 瓦房店市| 沭阳县|