[アルゴリズム]平方ソート
4591 ワード
昇順で並べた数列を生成する場合、数列の要素を2乗昇順に並べて出力するプログラム.
先に二乗して並べ替えることができるが,昇順で並べ替える意味はO(n)内で終わらなければならない.
先に二乗して並べ替えることができるが,昇順で並べ替える意味はO(n)内で終わらなければならない.
function solution(arr){
let left=0;
let right=arr.length-1;
let square=new Array();
for(let i=arr.length-1;i>=0;i--){
if(Math.abs(arr[left])>Math.abs(arr[right])){
// left 의 절댓값이 더 큰경우
square[i]=arr[left]*arr[left];
left++;
}
else{
square[i]=arr[right]*arr[right];
right--;
}
}
return square;
}
console.log(solution([-4,-1,0,3,10]));
Reference
この問題について([アルゴリズム]平方ソート), 我々は、より多くの情報をここで見つけました https://velog.io/@mingsomm/알고리즘-제곱수-정렬テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol