Java implementation explanation for radix sorting

I read and learn the Java implementation for sorting radix, as shown below. It would be great if someone could clarify the logical meaning pointTo, indexand globalPtr.

https://www.hackerrank.com/challenges/string-similarity/editorial

private void radixSort0() {
    globalPtr = 0;
    Arrays.fill(bucketHead, -1);
    Arrays.fill(next, -1);

    for (int i = 0; i < n; i++) {
        int value = nr0[index[i]];
        if (bucketHead[value] == -1) bucketHead[value] = bucketTail[value] = globalPtr;
        else bucketTail[value] = next[bucketTail[value]] = globalPtr;
        pointTo[globalPtr++] = index[i];
    }

    int ptr = 0;
    for (int i = 0; i < M; i++)
        for (int j = bucketHead[i]; j != -1; j = next[j])
            index[ptr++] = pointTo[j];
}
+4
source share
2 answers

radixSort0() radix. - radix, .
( ) radixSort int[] next - -1 . ( next[some_index_depending_on value] index[i] - .) int[] pointTo, , value. next&value , , next&value. globalPtr - , /the array/s.

( , , - , , , : .)
, Java

private void radixSortStep(int[]nr) {
    List<Integer> value[] = new List[M];
    for (int i = 0; i < value.length; i++)
        value[i] = new ArrayList<Integer>(0);

    for (int i: indexes)
        value[nr[i]].add(i);

    int ptr = 0;
    for (int i = 0; i < M; i++)
        for (int val: value[i])
            indexes[ptr++] = val;
}

( M ( n + 1) nr1 ( , n, -1))

+2
import java.io.*;
import java.util.*;

public class St {
    public static int calculate(String s){
        char[]arr=s.toCharArray();
        int length=arr.length;
        int count=length;
        for(int i=1;i<length;i++){
            int len=length-i;
            int j=0;
            for(;j<len;j++)
                if(arr[j]!=arr[j+i]){
                    break;
                }
            count+=j;
        }
        return count;
    }
    public static void main(String[] args) {
        Scanner scanner = new Scanner( System.in );
        int n=scanner.nextInt();
        for(int i=0;i<n;i++){
            String s=scanner.next();
            System.out.println(calculate(s));
        }
    }
}

, - -, , .

+1

Source: https://habr.com/ru/post/1629651/


All Articles