在java中,如何将一个数组中的数字排序为两个不同的数组?
我必须创建一个程序,将偶数和奇数同时放入一个数组,将所有偶数放入一个数组,将所有奇数放入另一个数组。我使用for循环遍历所有数字并确定它们是偶数还是奇数,但我遇到的问题是,由于原始数组中的数字是随机的,我不知道偶数数组或奇数数组的大小,因此,如果没有一堆剩余的点,或者没有足够的点来容纳所有的数字,我无法想出如何将原始数组中的数字分配给偶数/奇数数组。有什么想法吗 使用在java中,如何将一个数组中的数字排序为两个不同的数组?,java,arrays,for-loop,Java,Arrays,For Loop,我必须创建一个程序,将偶数和奇数同时放入一个数组,将所有偶数放入一个数组,将所有奇数放入另一个数组。我使用for循环遍历所有数字并确定它们是偶数还是奇数,但我遇到的问题是,由于原始数组中的数字是随机的,我不知道偶数数组或奇数数组的大小,因此,如果没有一堆剩余的点,或者没有足够的点来容纳所有的数字,我无法想出如何将原始数组中的数字分配给偶数/奇数数组。有什么想法吗 使用列表。然后,您不需要预先声明大小,它们可以动态增长 如果确实需要数组,您可以在以后使用列表上的toArray()方法。使用列表。然
列表
。然后,您不需要预先声明大小,它们可以动态增长
如果确实需要数组,您可以在以后使用
列表上的toArray()
方法。使用列表。然后,您不需要预先声明大小,它们可以动态增长
如果确实需要数组,您可以在以后使用列表上的toArray()
方法。尝试使用ArrayList。你可以用
num % 2 == 0
查看num是偶数还是奇数。如果它真的=0,那么它是偶数,否则它是奇数
List<Integer> odds = new ArrayList();
List<Integer> evens = new ArrayList();
for (int i = 0; i< array.length; i++) {
if (array[i] % 2 == 0) {
evens.add(array[i]);
}
else {
odds.add(array[i]);
}
}
(注意:未测试的代码,因此可能会有一些拼写错误)
编辑:
如果不允许使用ARARYLIST,那么请考虑以下使用数组的方法。它的效率不如对原始数组进行两次遍历
int oddSize = 0;
int evenSize = 0;
for (int i = 0; i< array.length; i++) {
if (array[i] % 2 == 0) {
evenSize++;
}
else {
oddSize++;
}
}
Integer[] oddArray = new Integer[oddSize];
Integer[] evenArray = new Integer[evenSize];
int evenIdx = 0;
int oddIdx = 0;
for (int i = 0; i< array.length; i++) {
if (array[i] % 2 == 0) {
evenArray[evenIdx++] = array[i];
}
else {
oddArray[oddIdx++] = array[i];
}
}
int-oddSize=0;
int evenSize=0;
for(int i=0;i
尝试使用ArrayList。你可以用
num % 2 == 0
查看num是偶数还是奇数。如果它真的=0,那么它是偶数,否则它是奇数
List<Integer> odds = new ArrayList();
List<Integer> evens = new ArrayList();
for (int i = 0; i< array.length; i++) {
if (array[i] % 2 == 0) {
evens.add(array[i]);
}
else {
odds.add(array[i]);
}
}
(注意:未测试的代码,因此可能会有一些拼写错误)
编辑:
如果不允许使用ARARYLIST,那么请考虑以下使用数组的方法。它的效率不如对原始数组进行两次遍历
int oddSize = 0;
int evenSize = 0;
for (int i = 0; i< array.length; i++) {
if (array[i] % 2 == 0) {
evenSize++;
}
else {
oddSize++;
}
}
Integer[] oddArray = new Integer[oddSize];
Integer[] evenArray = new Integer[evenSize];
int evenIdx = 0;
int oddIdx = 0;
for (int i = 0; i< array.length; i++) {
if (array[i] % 2 == 0) {
evenArray[evenIdx++] = array[i];
}
else {
oddArray[oddIdx++] = array[i];
}
}
int-oddSize=0;
int evenSize=0;
for(int i=0;i
上述答案是正确的,并描述了人们通常如何实现这一点。但是对你的问题的描述让我觉得这是一个类的赋值,动态列表可能是不受欢迎的
所以这里有一个替代方案
将数组分为奇数和偶数两部分。然后计算有多少奇数/偶数,并将值复制到两个数组中
大概是这样的:
static void insertionSort(final int[] arr) {
int i, j, newValue;
int oddity;
for (i = 1; i < arr.length; i++) {
newValue = arr[i];
j = i;
oddity = newValue % 2;
while (j > 0 && arr[j - 1] % 2 > oddity) {
arr[j] = arr[j - 1];
j--;
}
arr[j] = newValue;
}
}
public static void main(final String[] args) {
final int[] numbers = { 1, 3, 5, 2, 2 };
insertionSort(numbers);
int i = 0;
for (; i < numbers.length; i++) {
if (numbers[i] % 2 != 0) {
i--;
break;
}
}
final int[] evens = new int[i + 1];
final int[] odds = new int[numbers.length - i - 1];
if (evens.length != 0) {
System.arraycopy(numbers, 0, evens, 0, evens.length);
}
if (odds.length != 0) {
System.arraycopy(numbers, i + 1, odds, 0, odds.length);
}
for (int j = 0; j < evens.length; j++) {
System.out.print(evens[j]);
System.out.print(" ");
}
System.out.println();
for (int j = 0; j < odds.length; j++) {
System.out.print(odds[j]);
System.out.print(" ");
}
}
静态void insertionSort(最终int[]arr){
int i,j,新值;
智力古怪;
对于(i=1;i0&&arr[j-1]%2>奇数){
arr[j]=arr[j-1];
j--;
}
arr[j]=新值;
}
}
公共静态void main(最终字符串[]args){
最终整数[]数={1,3,5,2,2};
插入排序(数字);
int i=0;
对于(;i
上述答案是正确的,并描述了人们通常如何实现这一点。但是对你的问题的描述让我觉得这是一个类的赋值,动态列表可能是不受欢迎的
所以这里有一个替代方案
将数组分为奇数和偶数两部分。然后计算有多少奇数/偶数,并将值复制到两个数组中
大概是这样的:
static void insertionSort(final int[] arr) {
int i, j, newValue;
int oddity;
for (i = 1; i < arr.length; i++) {
newValue = arr[i];
j = i;
oddity = newValue % 2;
while (j > 0 && arr[j - 1] % 2 > oddity) {
arr[j] = arr[j - 1];
j--;
}
arr[j] = newValue;
}
}
public static void main(final String[] args) {
final int[] numbers = { 1, 3, 5, 2, 2 };
insertionSort(numbers);
int i = 0;
for (; i < numbers.length; i++) {
if (numbers[i] % 2 != 0) {
i--;
break;
}
}
final int[] evens = new int[i + 1];
final int[] odds = new int[numbers.length - i - 1];
if (evens.length != 0) {
System.arraycopy(numbers, 0, evens, 0, evens.length);
}
if (odds.length != 0) {
System.arraycopy(numbers, i + 1, odds, 0, odds.length);
}
for (int j = 0; j < evens.length; j++) {
System.out.print(evens[j]);
System.out.print(" ");
}
System.out.println();
for (int j = 0; j < odds.length; j++) {
System.out.print(odds[j]);
System.out.print(" ");
}
}
静态void insertionSort(最终int[]arr){
int i,j,新值;
智力古怪;
对于(i=1;i0&&arr[j-1]%2>奇数){
arr[j]=arr[j-1];
j--;
}
arr[j]=新值;
}
}
公共静态void main(最终字符串[]args){
最终整数[]数={1,3,5,2,2};
插入排序(数字);
int i=0;
对于(;i