gpt4 book ai didi

java - 对数组的偶数和奇数部分进行排序

转载 作者:行者123 更新时间:2023-12-02 10:51:30 24 4
gpt4 key购买 nike

我有点坚持这个逻辑。可以说我有一个 int 数组。我需要的是将偶数和奇数分开,即所有偶数应按排序顺序排在第一位,然后按排序顺序排列所有奇数。
这需要仅使用数组而不是集合来完成。
输入将是。

int[] a ={3,2,5,6,4,9,11,7}

输出应为

{2,4,6,3,5,7,9,11}

我的方法是:-
1.先把偶数和奇数分开。
2.然后找到last_index-of_even_number。
3. 然后先对数组排序0-last_index-of_even_number,然后last_index-of_even_number- arr.length

但我认为这不是一个好方法。任何人都可以帮助我通过算法和代码示例来纠正这个逻辑。

最佳答案

应用任何排序算法,并使用认为偶数“小于”奇数的函数作为比较器。这使您能够使用良好的排序算法,同时仍然按照您想要的方式对元素进行排序。

这是我的 gnome 排序实现和比较函数:

private static void sort(int[] arr) {
int index = 0;
int n = arr.length;
while (index < n) {
if (index == 0)
index++;
if (compare(arr[index], arr[index - 1]))
index++;
else {
int temp = arr[index];
arr[index] = arr[index - 1];
arr[index - 1] = temp;
index--;
}
}
}

private static boolean compare(int a, int b) {
if (a % 2 == b % 2) return a > b;
return a % 2 == 1;
}

public static void main(String[] args) {
int[] a = {3, 2, 5, 6, 4, 9, 11, 7};

sort(a);

for (int i : a) {
System.out.print(i + " ");
}
}

工作正常。不过,请尝试其他排序算法。

TL;DR:不要使用“<”和“>”比较项目,而是使用函数。

关于java - 对数组的偶数和奇数部分进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50067169/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com