编写一个java程序来重新排列数组中的所有数字,甚至在奇数之前,只使用O(1)空间,并且应该保持偶数和奇数的相对顺序,例如:input:[1,2,3,4 ,5]输出:[2,4,1,3,5]
试试这段代码:
public static void main(String[] args) { int[] arr = {1, 2, 3, 4, 5}; int temp=0; int a=0; for(int i=0;i<arr.length;i++){ if(arr[i]%2==0){ for (int j=i;j>a;j--){ temp=arr[j-1]; arr[j-1]=arr[j]; arr[j]=temp; } a++; } } System.out.println(Arrays.toString(arr)); }
建议:
通过阵列查看相邻的数字对 . 每当你找到一对第一个数字是奇数而第二个数字是偶数时,交换它们 . 保持交换数量的计数 . 继续对阵列进行传递,直到你最终传出一个你不必交换任何数字的传球 .
2 回答
试试这段代码:
建议:
通过阵列查看相邻的数字对 . 每当你找到一对第一个数字是奇数而第二个数字是偶数时,交换它们 . 保持交换数量的计数 . 继续对阵列进行传递,直到你最终传出一个你不必交换任何数字的传球 .