小编use*_*003的帖子

使用flag-sort在Java中对数组进行排序

用Java编写静态方法:

public static void sortByFour (int[] arr)
Run Code Online (Sandbox Code Playgroud)

作为参数接收一个充满非负数(零或正数)的数组,并按以下方式对数组进行排序:

  • 在数组的开头,将显示四个没有余数的所有数字.
  • 在它们之后,将出现数组中所有以4为余数的数字.
  • 在它们之后,将出现数组中所有以4为余数的数字.
  • 在数组的末尾,将显示所有其余数字(除以4而其余为3的数字).

(每组中数字的顺序无关紧要)

使用flag-sort,该方法必须尽可能高效.空间复杂度必须为O(1),时间复杂度必须为O(N)或更小.

注意:请勿使用额外的阵列.

我读到了标志排序,但我不知道如何用Java编写它的代码.有人可以帮帮我吗?

根据我读到的内容,有必要在每个桶的数组中找到起始索引和结束索引.那是对的吗?为此,有必要计算数组中有多少数除以4,余数为0,1,2和3.

嗯...

public static void sortByFour(int[] arr) {
    int count1 = 0, count2 = 0, count3 = 0, count4 = 0;
    int startB1, startB2, startB3, startB4;
    for (int i = 0; i < arr.length; i++) {
        if (arr[i] % 4 == 0)
            count1++;
        if (arr[i] % 4 == 1)
            count2++;
        if (arr[i] % 4 == 2)
            count3++;
        if (arr[i] …
Run Code Online (Sandbox Code Playgroud)

java sorting

3
推荐指数
1
解决办法
1416
查看次数

标签 统计

java ×1

sorting ×1