在Java中使用气泡排序对24位数组进行排序

在Java中使用气泡排序对24位数组进行排序,java,Java,我正试图找到一种对24位输入进行冒泡排序的好方法。 似乎我的代码有问题,但我无法找出问题所在。 我是Java新手,所以请同情我。 谢谢 publicstaticvoidsorttributes(RandomAccessFile)引发IOException{ 用于(长i=1;i

我正试图找到一种对24位输入进行冒泡排序的好方法。 似乎我的代码有问题,但我无法找出问题所在。 我是Java新手,所以请同情我。 谢谢

publicstaticvoidsorttributes(RandomAccessFile)引发IOException{
用于(长i=1;i实际高度){
文件.seek(j);
file.write(right1);
file.write(right2);
file.write(right3);
file.write(left1);
file.write(left2);
file.write(left3);
}
}
}
}

再次感谢

二进制字符串中没有前导零,因此连接的版本将因长度不同而倾斜。例如,“1”+“101”+“1”看起来可能比“110”+“1”+“0”大


您可以使用位移位运算符将字节整齐地打包成一个更大的字,如int或long(二进制字符串中没有前导零,因此您的连接版本将因不同的长度而倾斜。例如,“1”+“101”+“1”可能看起来比“110”+“1”+“0”大


您可以使用位移位运算符将字节整齐地打包成一个较大的单词,如int或long(很抱歉,但是“我的代码似乎有问题”不是很具体。是否编译?是否运行?是否抛出错误?是否产生错误结果?请澄清您的问题,因为此时,任何试图帮助您的人都需要打开他们的IDE,围绕您的代码创建一个类,尝试创建一个具有24位值的二进制文件,以某种方式匹配您的输入,猜猜您是什么实际尝试实现,然后开始调试,以找出为什么没有得到预期的结果。嗨,Robby,感谢您的快速回复,是的,它运行了,但没有给我正确的结果。我尝试调试了3.5个小时…是的,我给了它一个我自己创建的输入。这个问题是在严重头痛之后提出的。对不起,但是“看来我的代码有问题"不是很具体。是否编译?是否运行?是否抛出错误?是否产生错误结果?请澄清您的问题,因为此时,任何试图帮助您的人都需要打开他们的IDE,围绕您的代码创建一个类,尝试创建一个具有24位值的二进制文件,以某种方式匹配您的输入,猜猜您是什么实际尝试实现,然后开始调试,找出为什么没有得到想要的结果。嗨,Robby,谢谢你的快速回复,是的,它运行了,但没有给我正确的结果。我试着调试了3.5个小时…是的,我给了它一个我自己创建的输入。这个问题是在一个严重的头痛之后提出的。哇,非常感谢!但是它没有ill没有做我想让它做的事。我想我在正确计算索引时遇到了问题。我得到了正确的索引,再次感谢哇,非常感谢!但它仍然没有做我想让它做的事。我想我在正确计算索引时遇到了问题。我得到了正确的索引,再次感谢
public static void sortTriBytes(RandomAccessFile file) throws IOException {
    for (long i = 1; i < file.length()/3; i=i+3){
        for (long j = 0; j < file.length()-(3*(i-1)); j=j+3){
            String leftStr = "";
            String rightStr = "";
            file.seek(j);
            int left1 = file.readUnsignedByte();
            int left2 = file.readUnsignedByte();
            int left3 = file.readUnsignedByte();
            leftStr+= Integer.toBinaryString(left1);
                    leftStr+=Integer.toBinaryString(left2);
                        leftStr+=Integer.toBinaryString(left3);
            int actualleft = Integer.parseInt(leftStr,2);

            int right1 = file.readUnsignedByte();
            int right2 = file.readUnsignedByte();
            int right3 = file.readUnsignedByte();
            rightStr+= Integer.toBinaryString(right1);
            rightStr+= Integer.toBinaryString(right2);
            rightStr+= Integer.toBinaryString(right3);
            int actualright = Integer.parseInt(rightStr,2);
        if (actualleft > actualright) {
            file.seek(j);
            file.write(right1);
            file.write(right2);
            file.write(right3);
            file.write(left1);
            file.write(left2);
            file.write(left3);
            }

        }
    }
}