17.元素重排

tech2025-03-19  4

package day7; //元素重排,所有的奇数保存到数组左边,所有偶数保存到数组右边(不分大小) public class lianxi3 { public static void main(String[] args) { //int[] arr = {26,67,49,52,38,66,7,71,56,87}; int[] arr = {22,44,66,78}; /* 1.找到奇数与偶数的小标互换元素 2.建立两个数组 分别存放奇数与偶数 最后放入一个数组 (两个方法都可以) */ //1. int left = -1; int right = -1; int i = 0; int j = arr.length-1; while(true) { //left为偶数位置, 找下标 for(; i<arr.length-1; i++) { if(arr[i] % 2 == 0) { left = i; break; } } for(; j>=0; j--) { if(arr[j] % 2 != 0) { right = j; break; } } //交换arr[left]的偶数与arr[right]的奇数 if(left < right) { int temp = arr[left]; arr[left] = arr[right]; arr[right] = temp; } else break; //特殊情况下, 把left与right的初始值改为-1 利用特殊值法 //全为偶数 或 奇数 if(left == -1 || right == -1) break; } //显示结果 for(int k=0; k<arr.length; k++) System.out.print(arr[k] + " "); } } /* 2020年8月22日20:15:22 有时候没报错 可能是逻辑上存在错误 */
最新回复(0)