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存储奇数和偶数