정렬 알고리즘, 정렬되지 않은 배열이 주어졌을 때 어떻게 오름차순으로 정렬?
순서>
1. 베열 내 연속되 두항목 가리켜, 첫 번째 항목과 두 번쨰 항목 비교
2. 두 항목 비교해 왼쪽이 오른쪽 값보다 크면 두 항목 교환하고 순서 올바르면 그대로
3. 포인를 오른쪽으로 한 셀씩 옮김
4. 배열 끝까지 또는 이미 정렬된 값까지 1-3단계 반복해 배열 첫 패스스루 끝내기
5. 두 포인터 다시 배열 처음 두 값으로 옮겨 1-4 단계 다시 실행해 교환 일어나지 않으면 정렬되어 문제 해결
function bububbleSort(list){
let unsortedUntilIdx = list.length - 1;
let isSorted = false;
while(!isSorted){
isSorted = true;
for(let i = 0; i < list.length; i ++){
if(list[i] > list[i+1]){
[list[i], list[i+1]] = [list[i+1], list[i]];
isSorted = false;
unsortedUntilIdx -= -1;
}
}
}
return list
}
bububbleSort([4,2,7,1,3])
다음 함수 배열 가장 큰 수 하나 찾아내지만 효율성 n2 이를 n이 되도록 함수 다시 작성
O(N)2 코드
function greatestNum(arr){
for(let i=0; i<arr.length; i++){
let isValGreatest = true
for(let j=0; j<arr.length; j++){
if(arr[j]>arr[i]) isValGreatest = false
}
if(isValGreatest) return arr[i]
}
}
greatestNum([1,23,4,35,3,23,5])
O(N) 코드
function upgradeGreatestNum(arr){
let greatestNum = arr[0]
for(let i=1; i<arr.length; i++){
greatestNum = greatestNum < arr[i] ? arr[i] : greatestNum
}
return greatestNum
}
upgradeGreatestNum([1,23,4,35,3,26,52,123,3,4,2,3,52,2,35])