在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/HTML/ 一個(gè)先遞增后遞減的數(shù)組,如何排序最簡(jiǎn)單

一個(gè)先遞增后遞減的數(shù)組,如何排序最簡(jiǎn)單

例如

var arr = [1, 3, 6, 10, 2, 7, 9];

排序后

var arr = [1, 2, 3, 6, 7, 9, 10];

?。?!特別說(shuō)明,我沒(méi)寫錯(cuò)?。?! 不是你們以為的先遞增后遞減?。?! 那些想當(dāng)然還踩別人題目的 怕不是常規(guī)題做多了?。。?!

這是我出去面試的時(shí)候碰見(jiàn)的,那個(gè)人特地強(qiáng)調(diào)不是先增后減?。?!

!!!不能用sort方法 ,純?cè)姆椒▽?/p>

回答
編輯回答
未命名

你的例子寫錯(cuò)了吧,難道不應(yīng)該是

var arr = [1, 3, 6, 10, 9, 7, 2];

這樣的話,維護(hù)兩個(gè)指針,一個(gè)從其往后,一個(gè)從后往前,誰(shuí)小排誰(shuí),兩個(gè)指針遇到了,就全排好了。

2018年2月11日 14:32
編輯回答
笨小蛋

如果確定時(shí)先遞增再遞減的數(shù)組, 直接頭尾合并 時(shí)間復(fù)雜度 o(n)

思路

let i=0
let j=arr.length-1
let newArr = []
if(arr[i]<arr[j]){
    newArr.push(arr[i++])
}else{
    newArr.push(arr[j--])
}

加個(gè)循環(huán) 一遍就能排好

2017年12月7日 03:35
編輯回答
尐懶貓
let arr = [1, 3, 6, 10, 9, 7, 2];
function trans (arr) {
  let i = 0
  let j = arr.length - 1
  let result = []
  while (i <= j) {
    if (arr[i] <= arr[j]) {
      result.push(arr[i++])
    } else {
      result.push(arr[j--])
    }
  }
  return result
}
trans(arr)
2018年3月8日 07:13