[알고리즘 js]정렬#1
선택정렬 버블정렬
프로그래머스 관련 문제
- level1 K번째 선수
- level2 가장큰수
- level2 H-Index
제한사항: 정수 배열을 오름차순 정렬 하시오 (작은수 ... 큰수)
선택정렬
0번째 보다 작은수가 뒤쪽에 존재하면 그 수와 위치를 바꿈
1번째 보다 작은수가 뒤쪽에 존재하면 그 수와 위치를 바꿈
.
.
.function 선택정렬(arr){ let answer = arr; for (let i = 0; i < arr.length - 1; i++) { idx = i; for (let j = i + 1; j < arr.length; j++) { if (arr[idx] > arr[j]) { idx = j; } } [arr[i], arr[idx]] = [arr[idx], arr[i]]; } return answer; }
버블정렬
solution1
0번째 1번째 비교해서 1번째가 작으면 위치 바꿈
1번째 2번째 비교해서 2번째가 작으면 위치 바꿈
.
.
.
0번째 1번째 비교해서 1번째가 작으면 위치 바꿈
1번째 2번째 비교해서 2번째가 작으면 위치 바꿈
.
.
.
길이-1 번째 만큼 반복 (다음 번째와 비교하기 때문에 길이-1만큼 반복)function solution1(arr) { let answer = arr; for (let i = 0; i < arr.length - 1; i++) { for (let j = 0; j < arr.length - 1; j++) { if (arr[j] > arr[j + 1]) { [arr[j], arr[j + 1]] = [arr[j + 1], arr[j]]; } } console.log('sol1', arr); } return answer; }
solution2
let index = arr.length -1 (배열의 마지막 인덱스)
// 뒤부터 정렬 하기때문에 이미 정렬된 부분은 순회 하기 않기 위해 선언
0번째 1번째 비교해서 1번째가 작으면 위치 바꿈
1번째 2번째 비교해서 2번째가 작으면 위치 바꿈
.
.
.
index 만큼 반복
index 1 감소
0번째 1번째 비교해서 1번째가 작으면 위치 바꿈
1번째 2번째 비교해서 2번째가 작으면 위치 바꿈
.
.
.
index 만큼 반복
index 1 감소
index 가 1 이 될때까지 반복
```js
function solution2(arr) {
let answer = arr;
let index = arr.length-1
for (let i = 0; i < arr.length - 1; i++) {
for (let j = 0; j < index; j++) {
if (arr[j] > arr[j + 1]) {
[arr[j], arr[j + 1]] = [arr[j + 1], arr[j]];
}
}
index--
}
return answer;
}
j 값을 감소 시키면서 반복하면 뒤부터 정렬 된다.
Author And Source
이 문제에 관하여([알고리즘 js]정렬#1), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@michael00987/정렬저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)