数组中的Java元素XOR

时间:2018-11-04 03:52:02

标签: java

我对java数组元素的XOR有问题,这是我的代码:

if ( have_rows( 'custom_shortcode', 'option' ) ) :
while ( have_rows( 'custom_shortcode', 'option' ) ) : the_row();

    $name = get_sub_field('shortcode_name');

     function test_shortcode() {

         if ( have_rows( 'custom_shortcode', 'option' ) ) :
            while ( have_rows( 'custom_shortcode', 'option' ) ) : the_row();

                $content = get_sub_field('shortcode_content');
                return $content;

            endwhile;
         endif;

     }

    add_shortcode( $name, $name . '_shortcode' );

endwhile;
endif;

我只想交换数组中的元素。 结果似乎很奇怪,例如[4,5,0,6,0,1,0] ...我对此完全感到困惑。

1 个答案:

答案 0 :(得分:0)

XOR swap algorithm应该是

copy[i] = copy[i] ^ copy[s];
copy[s] = copy[s] ^ copy[i];
copy[i] = copy[i] ^ copy[s];

copy[i] ^= copy[s];
copy[s] ^= copy[i];
copy[i] ^= copy[s];

但是我更喜欢Collections.shuffle(List)并将int[]传递给方法并使其静态;喜欢,

public static int[] shuffle(int[] original) {
    List<Integer> al = IntStream.of(original).boxed().collect(Collectors.toList());
    Collections.shuffle(al);
    return al.stream().mapToInt(Integer::intValue).toArray();
}