本文主要是介绍死磕数据结构与算法(排序)--基数排序。才疏学浅,如有错误,及时指正,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
死磕数据结构与算法(排序)--基数排序。才疏学浅,如有错误,及时指正
- 八大排序算法
- 1. [冒泡排序算法]()
- 2. [选择排序算法]()
- 3. [插入排序冒泡算法]()
- 4. [希尔排序冒泡算法]()
- 5. [快速插入冒泡算法]()
- 6. [归并排序冒泡算法]()
- 7. [基数排序冒泡算法]()
- 8. [堆排序算法]()
- 基数排序
- 1. 概念以及思路
- 2. 图解过程
- 3. 示例代码
八大排序算法
1. 冒泡排序算法
2. 选择排序算法
3. 插入排序冒泡算法
4. 希尔排序冒泡算法
5. 快速插入冒泡算法
6. 归并排序冒泡算法
7. 基数排序冒泡算法
8. 堆排序算法
基数排序
1. 概念以及思路
基数排序,属于“分配式排序”,又叫“桶子法”。是桶排序的扩展。
基数排序是效率高的稳定性排序法
基数排序是经典的空间换时间的方法,占用的内存很大,当对海量的数据进行排序时,容易出现 OutofMemoryError
思路: 将数组中的每一个数按照位数进行切割,然后放入事先准备好的桶中,按照每一次的位数从而得到有序的序列。
2. 图解过程
3. 示例代码
package sort;import java.util.Arrays;public class RadixSort {public static void main(String[] args) {int arr[] = {15,17,30,98,5,60,4,5,1,50};radixSort( arr );System.out.println( Arrays.toString(arr));}public static void radixSort(int[] arr){//定义一个桶的二维数组int a[][] = new int[10][arr.length];//定义一个存储每个桶内有多少元素的数组int b[] = new int[arr.length];int max = arr[0];//计算出arr中最大的那个数for (int i = 1; i < arr.length; i++) {if(arr[i] > max){max = arr[i];}}//使用max计算出位数int weishu = (max + "").length();int t = 0;//循环操作for (int i = 0; i < weishu; i++) {//取出arr数组的每一个元素,然后把数组放入到创建的桶中。for (int j = 0; j < arr.length; j++) {int wei = arr[j] / (int)Math.pow( 10, i ) % 10;a[wei][b[wei]] = arr[j];b[wei]++;}//元素全进入桶中之后,再把元素拿出来放入arr中for (int j = 0; j < arr.length; j++) {if(b[j] != 0) {for (int k = 0; k < b[j]; k++) {arr[t] = a[j][k];t++;}}}//把b中的数组清0for (int k = 0; k < b.length; k++) {b[k] = 0;}t = 0;}}
}
这篇关于死磕数据结构与算法(排序)--基数排序。才疏学浅,如有错误,及时指正的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!