当前位置 : 主页 > 编程语言 > python >

Algrothm_Sort_BaseNumber

来源:互联网 收集:自由互联 发布时间:2023-03-22
稳定性:[稳定](不稳定的算法结构:如果有两个相同的元素5,会导致第一个5和第二个5的位置发生改变) idea:与其他7中排序算法不同,他不需要比较关键字的大小 根据比较关键字中各位的

稳定性:[稳定](不稳定的算法结构:如果有两个相同的元素5,会导致第一个5和第二个5的位置发生改变)

idea:与其他7中排序算法不同,他不需要比较关键字的大小

根据比较关键字中各位的值,通过对排序的N个元素进行若干趟“分配”和“收集”来实现排序的

*/ package seven_happy; import java.util.ArrayList; import java.util.List; public class Code_Demo { /** * author: Ain * model: write a code about selection_sort * date:2016-3-9 */ 定义变量值 private static final int [] a = { 0, 3, 1, 8, 7, 2, 5, 4, 6, 9 }; private static final String OUTPUT_ago = "基数排序之前的顺序"; private static final String OUTPUT_AFTER = "基数排序之后的顺序"; 主程序入口 public static void main(String[] args) { System.out.print(OUTPUT_ago); for (int i = 0; i < a.length; i++) { System.out.print(a[i] + " "); } // 调用基数排序方法 sort(a); System.out.println(); System.out.print(OUTPUT_AFTER); for (int i = 0; i < a.length; i++) { System.out.print(a[i] + " "); } } 基数排序方法 private static void sort(int[] array) { // 找到最大数,确定要排序几趟 int max = 0; for (int i = 0; i < array.length; i++) { if (max < array[i]) { max = array[i]; } } // 判断位数 int times = 0; while (max > 0) { max = max / 10; times++; } // 建立十个队列 List<ArrayList> queue = new ArrayList<ArrayList>(); for (int i = 0; i < 10; i++) { ArrayList queue1 = new ArrayList(); queue.add(queue1); } // 进行times次分配和收集 for (int i = 0; i < times; i++) { // 分配 for (int j = 0; j < array.length; j++) { int x = array[j] % (int) Math.pow(10, i + 1) / (int) Math.pow(10, i); ArrayList queue2 = queue.get(x); queue2.add(array[j]); queue.set(x, queue2); } // 收集 int count = 0; for (int j = 0; j < 10; j++) { while (queue.get(j).size() > 0) { ArrayList<Integer> queue3 = queue.get(j); array[count] = queue3.get(0); queue3.remove(0); count++; } } } } }

上一篇:Algrothm_Sort_Bubble
下一篇:没有了
网友评论