문제
선택 정렬
N개이 숫자가 입력되면 오름차순으로 정렬하여 출력하는 프로그램을 작성하세요.
정렬하는 방법은 선택정렬입니다.
- 입력예제
6
13 5 11 7 23 15
- 출력예제
5 7 11 13 15 23
answer에 arr를 얕은 복사 -> 둘 다 a 배열을 가리키는 것. 둘 중 하나를 변경해도 값이 같이 바뀜
1. i와 j로 이중 for문 탐색
2. idx변수는 i의 초기 인덱스 값을 넣어줌
3. j의 for문이 돌며 arr의 j와 idx 인덱스 요소가 비교되며 j 자리의 요소값이 더 작으면 idx변수에 j를 넣어준다.
4. [arr[i], arr[idx]] = [arr[idx], arr[i]] 구조 분해 할당으로 배열의 자리를 서로 바꿔준다 temp변수를 사용해서 변경할 수도 있다. (https://2-juhyun-2.tistory.com/37 참고)
function solution(arr) {
let answer = arr;
for(let i = 0; i < arr.length-1; i++){
let idx = i;
for(let j = i + 1; j < arr.length; j++){
if(arr[j] < arr[idx]) idx = j;
}
[arr[i], arr[idx]] = [arr[idx], arr[i]];
}
return answer;
}
let a = [13, 5, 11, 7, 23, 15];
console.log(solution(a));
배열의 자리를 어떻게 바꾸는지 참고