刷題的日常Day2--調整數組順序

題目描述:輸入一個整數數組,實現一個函數來調整該數組中數字的順序,使得所有的奇數位於數組的前半部分,所有的偶數位於位於數組的後半部分,並保證奇數和奇數,偶數和偶數之間的相對位置不變。

題目分析:這道題是一道的查找加插入排序的經典題目,我們需要找到奇數的位置,並將奇數插入到已經排好 的奇數的後面和已經排好的偶數前面,這就要求我們知道排好奇數的索引位置,然後對已知的偶數數組進行插入排序,將奇數插入到偶數數組的前面。

代碼實現:

public class Solution { public void reOrderArray(int [] array) { int j = 0; for(int i = 0;i<array.length;i++){ if(array[i]%2==1){ //如果是奇數的話 if(i!=j){ int temp = array[i]; int k = i; for(k = i;k>j;k--){ array[k]=array[k-1]; } array[k]=temp; } j++; } } }}

推薦閱讀:

Leetcode之旅|從了解一棵樹開始(1)
刷題的日常Day2--斐波那契數列
刷題的日常Day1--從尾到頭列印鏈表
刷題的日常Day3--翻轉鏈表
刷題的日常Day1--二維數組中的查找

TAG:演算法與數據結構 |