天天看點

基數排序-- coding:utf-8 --write code here

對于一個int數組,請編寫一個基數排序算法,對數組元素排序。

給定一個int數組A及數組的大小n,請傳回排序後的數組。保證元素均小于等于2000。

測試樣例:

[1,2,3,5,2,3],6

[1,2,2,3,3,5]

參考文檔:http://www.cnblogs.com/Braveliu/archive/2013/01/21/2870201.html

我的送出

class RadixSort:

def radixSort(self, A, n):

if name == 'main':

r = RadixSort()

print(r.radixSort([1,2,3,5,2,3],6))

參考答案

import java.util.ArrayList;

import java.util.LinkedList;

public class RadixSort {

// ˝◊Èø…∞¸∫¨’˝ ˝°¢∏∫ ˝°¢0µƒª˘ ˝≈≈–Ú

public static void radixSort(int[] arr) {

if (arr == null || arr.length < 2) {

return;

}

int negNum = 0; // arr÷–∏∫ ˝µƒ∏ˆ ˝

for (int i = 0; i < arr.length; i++) {

negNum += arr[i] < 0 ? 1 : 0;

int[] negArr = new int[negNum];

int[] posArr = new int[arr.length - negNum];

int negi = 0;

int posi = 0;

if (arr[i] < 0) {

negArr[negi++] = -arr[i];

} else {

posArr[posi++] = arr[i];

radixSortForPositive(negArr);

radixSortForPositive(posArr);

int index = 0;

for (int i = negArr.length - 1; i >= 0; i--) {

arr[index++] = -negArr[i];

for (int i = 0; i < posArr.length; i++) {

arr[index++] = posArr[i];

上一篇: 基數排序
下一篇: 基數排序