안전 offer_13을 증명 : 배열의 순서를 조정

A : 제목 설명
, 배열 번호의 순서를 조절하는 기능을 실현하기 위해, 정수의 배열을 입력 어레이의 전반의 모든 홀수 부분은 모든 짝수 어레이의 후반부에 위치되고,하면 그 홀수 및 짝수, 홀수 및 짝수 보장하는 것이 이러한 상수 간의 상대적 위치.
II는 : 주제 분석
도 호기심 순서를 조정 한 후 원래 순서로 같은 위치를 유지하는 데 필요한이 문제를주의한다.
그래서이 문제를 해결하기 위해 생각하면 버블 정렬과 유사하다하여도 모든 여행 후 거품의 마지막 요소의 위치를 결정합니다.
세 : 코드

public class Solution {
     public void reOrderArray(int [] array) {
        int temp=0;
        for(int i=0;i<array.length-1;i++){
                for(int j=0;j<array.length-1-i;j++){
                    if(array[j]%2==0&&array[j+1]%2==1){//如果j位是偶数并且j+1位是奇数则可以进行交换
                        temp=array[j];
                        array[j]=array[j+1];
                        array[j+1]=temp;
                    }
                }
            }
        }
    }

테스트 결과는
안전 offer_13을 증명 : 배열의 순서를 조정
변화가 후 넷째, 순서에 대한 상관 없어
시작했다, 나는 순서가 변경 순서 여부를 상관하지 않는다 후 전자가 충분히 짝수 홀수에있는만큼 코드를 썼다. 내 생각은 두 변수 각각 첫 번째 배열에서 첫 번째 횡단과 두 변수가 충족 될 때까지 카운트 다운이, 조정이 완료 될 때를 설정하는 것입니다.
V. 코드

public class Oddpreven {
    public static int[] oddpreven(int[] array) {
        int i = 0;
        int j = array.length-1;
        int temp = 0;
        while (i < j) {//当连个变量相遇时,代表前后两部分都找完了
            if (array[i] % 2 == 0) {//前边的变量指向了偶数
                if (array[j] % 2 == 1) {//判断后边的是否指向了奇数
                    temp = array[i];//如果是,就交换位置
                    array[i] = array[j];
                    array[j] = temp;
                    i++;//两个变量同时在走一步
                    j--;
                } else {
                    j--;//如果后边现在不是奇数的话,就接着往前找,前边偶数的先不动
                }
            } else {
                i++;//前边没找到偶数就道标目前没有要交换的,继续走
            }
        }
        return array;
    }
    public static void main(String []args) {
        int[] array = {1, 2, 2,3,3,4,5,1,2,1};
        oddpreven(array);
       for (int i = 0; i < array.length; i++) {
          System.out.print(array[i]+" ");
       }
    }
}

VI. 테스트 결과
안전 offer_13을 증명 : 배열의 순서를 조정

추천

출처blog.51cto.com/14234228/2422787