算法刷题笔记-调整奇数和偶数的位置(相对位置不变)

622 阅读1分钟

参考:B站UP--子烁爱学习(推荐大家观看原视频)

  • 题目描述:


  • 题目解析


    • 使用冒泡排序

      • 由于要求是把奇数放在前面,相对位置不变那我们就把偶数往后移就行了,但是这时候又要求相对位置不变,那么遇到前偶后奇就交换位置,前奇后偶就不变,连续两个奇数和偶数也都不用变,这里主要是为了保证相对位置不会变化。

  • 代码示例

public void reOrderArray(int [] array) {
    	//i是我们要搜寻的数组中元素的个数,起先肯定是arr[0]--arr[length-1]然后依次向下递减
        for (int i = array.length-1; i > 0 ; i--) {
            for (int j = 0; j+1<=i ; j++) {
                //前偶后奇就交换位置
                if (array[j]%2==0&&array[j+1]%2==1) {
                    swap(array, j, j + 1);
                }
            }
        }
    }
	//交换位置
    public void swap(int[] arr,int i,int j){
        int temp=arr[j];
        arr[j]=arr[i];
        arr[i]=temp;
    }