13 调整数组顺序使奇数位于偶数前面

13 调整数组顺序使奇数位于偶数前面

输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
 
方法1:插入排序的思路:时间复杂度是N^2;
记录已经是奇数的位置下标(视作为有序区域),然后向后遍历,一经发现是奇数则进行“插入排序”,然后有序区下标加1。
func reOrderArray( array []int ) []int {
    // write code here
    if len(array) == 0 {
        return nil
    }

    tmp := 0
    j := 0//记录有序的奇数序列,最后一个位置

    for i := 0; i < len(array);i++ {
        if array[i] % 2 == 0 {
            continue
        } else {
            k := i
            tmp = array[i]

            for k > j {
                array[k] = array[k - 1]// // 这区间整体向后移动一位
                k--
            }

            array[k] = tmp
            j++
        }
    }

    return array
}

  

方法2:开辟空间换时间。

分别使用一个slice存储奇数和偶数

posted @ 2021-04-07 23:51  zqlucky  阅读(48)  评论(0编辑  收藏  举报