每日一題[17]-奇偶數排列

輸入一個整數數組,實現一個函數來調整該數組中數字的順序,使得所有的奇數位于數組的前半部分,所有的偶數位于位于數組的后半部分,并保證奇數和奇數,偶數和偶數之間的相對位置不變。
解:
第一種思路很簡短,遍歷一遍,奇數放一個array,偶數放一個array。

function reOrderArray(array)
{
    if(array.length<2)return array;
    var leftA=[], rightA=[];
    for(var i in array){
      if((array[i]%2)==1){
        leftA.push(array[i]);
      }else {
        rightA.push(array[i]);
      }
    }
    return leftA.concat(rightA);
}

這種算法時間復雜度為o(n),但是犧牲了內存。
第二種使用了冒泡排序的思想,如果偶數后面是奇數就交換。

function reOrderArray(array)
{
    if(array.length<2)return array;
    for(var i=0;i<array.length;i++){
      for(var j=array.length-1;j>i;j--){
        if((array[j]%2==1) && (array[j-1]%2===0)){
          var temp = array[j];
          array[j] = array[j-1];
          array[j-1]= temp;
        }
      }
    }
    return array;
}

這種算法時間復雜度較大,O(n2),但是不占用過多的內存。
最后,兩種算法在牛客網跑都是30ms,ㄟ( ▔, ▔ )ㄏ

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 本文出自 Eddy Wiki ,轉載請注明出處:http://eddy.wiki/interview-code.h...
    eddy_wiki閱讀 9,378評論 0 30
  • 背景 一年多以前我在知乎上答了有關LeetCode的問題, 分享了一些自己做題目的經驗。 張土汪:刷leetcod...
    土汪閱讀 12,775評論 0 33
  • 1、用C語言實現一個revert函數,它的功能是將輸入的字符串在原串上倒序后返回。 2、用C語言實現函數void ...
    希崽家的小哲閱讀 6,354評論 0 12
  • Wake Up 這是我在看《生命的本相》時在筆記本上畫的。 01第一個人:頭朝下,腳朝上,眼睛閉著,呈一種漂浮狀態...
    笑忘貓貓閱讀 594評論 0 0
  • 就昨日給大家的短培訓做個小結紀要: 統計學是數學的重要分支,在大數據時代數據分析的價值顯性且效果顯著,它能揭示現象...
    掌門_艾老師閱讀 253評論 0 1