基数排序(只适合整数)


【基数排序(只适合整数)】通常比较大小,我们直接就找到最大的位数的数。假设所有的数的位数都相同,根据对10的幂去模,从而保存进不同的集合;随着10的次幂的不断增大,数组排序完成了。

/** *基数排序: *核心思想: *1.首先获取最大的绝对值的数 *2.求出最大的绝对值的数,是10的times次幂。 *3.建立19个集合,分别保存个位是(-9,-8,-7,……,1,2,3,……8,9)的数 *4. 根据times次幂建立外层循环for(int i=0; ; ) *a. 获取对应的位的值 *b. 把每个数添加进相应的集合 *5.收集数据 * @param array */ public void basicSort(int [] array) { if(array == null && array.length ==0) { return ; } int max =0; //1获取最大的绝对值的数 for(int i =0; i0) { max = max/10; times ++; } List queue = new ArrayList(); //3建立19集合,分别保存个位是(-9,-8,-7,……,1,2,3,……8,9)的数 for(int i =0; i<20; i++) { ArrayList q = new ArrayList(); queue.add(q); } //4根据位数循环 for(int i =0 ; i0) { ArrayList q = queue.get(j); array[count] = q.get(0); q.remove(0); count++; } } } }

    推荐阅读