鍍金池/ 問答/人工智能  HTML/ JavaScript數(shù)組奇偶數(shù)排序,奇數(shù)在前,偶數(shù)在后,要求不新建數(shù)組。

JavaScript數(shù)組奇偶數(shù)排序,奇數(shù)在前,偶數(shù)在后,要求不新建數(shù)組。

例如:[1, 2, 3, 4, 5]排序后:1, 3, 5, 2, 4
注意:要求不新建數(shù)組,即在原數(shù)組的基礎(chǔ)上更改。

回答
編輯回答
亮瞎她

arr.sort(a => a%2 === 0); 但這種是不穩(wěn)定排序, 因?yàn)閟ort內(nèi)部使用快排, 快排本身不穩(wěn)定.
需要穩(wěn)定排序的話就歸并或者冒泡這些, 判斷條件改一下即可

2018年7月20日 03:31
編輯回答
不討喜

[1, 2, 3, 4, 5].sort(function(a, b){ / 里面就不寫了 / })

2017年5月24日 08:07
編輯回答
乖乖瀦

冒泡排序

let arr = [1, 2, 3, 4, 5, 7, 9, 10, 13, 18];

for (let i = 0; i < arr.length - 1; i++) {
    for (let j = 0; j < arr.length - i - 1; j++) {
        let tmp = arr[j];
        if (tmp % 2 === 0 && arr[j + 1] % 2 !== 0) {
            arr[j] = arr[j + 1];
            arr[j + 1] = tmp;
        }
    }
}

console.log('arr', arr);//[ 1, 3, 5, 7, 9, 13, 2, 4, 10, 18 ]

我一開始也以為sort會(huì)創(chuàng)建新數(shù)組,原來不會(huì)

let arr = [1, 2, 3, 4, 5, 7, 9, 10, 13, 18];

arr.sort((a, b) => {
    if (a % 2 === 0) {
        if (b % 2 !== 0) {
            return 1;
        }
        return 0;
    } else
        return -1
})

console.log('arr', arr);//[ 1, 3, 5, 7, 9, 13, 2, 4, 10, 18 ]

測(cè)試了一下sort是真的快,看樣子以后不需要用原生的。Array.prototype.sort 排序算法

2018年7月16日 02:41
編輯回答
病癮

如果對(duì)奇數(shù)間的順序,和偶數(shù)間的順序不需要和原來保持一致的話,可以參考快排的思想
一個(gè)指針從左往右搜,一個(gè)指針從右往左搜,當(dāng)左邊找到偶數(shù),右邊找到奇數(shù)時(shí),交換兩個(gè)數(shù),然后繼續(xù)查找,直到兩個(gè)指針相同

2018年1月28日 01:11