<버블정렬>
: N개의 숫자가 입력되면 오름차순으로 정렬하여 출력하는 프로그램을 작성한다. 정렬하는 방법은 선택정렬이다.
- 먼저 버블정렬은 서로 이웃한 데이터들을 비교하여 가장 큰 데이터를 가장 뒤로 보내며 정렬하는 방식이다.
- 그리하여 처음 외부for문이 돌아갈 때 맨 뒤에 있는 인덱스가 가장 먼저 정해진다. 버블정렬은 for문이 도는 횟수를 조금 유의해서 봐야할 거 같은데, 버블정렬이 가장 큰 데이터를 가장 뒤로 보내는 것이므로 인덱스0번을 제외한 것들은 다 버블정렬로 인해 값이 정해진다. 그러므로 외부 for문은 arr.length-1 까지 돌면 되고, 내부 for문은 arr.length-i-1 까지 돌면 된다.(만약 길이가 5라는 배열이라면, 첫 for문이 돌 때 인덱스 4번의 값이 정해지고, 두 번째 for문이 돌 때 인덱스 3번의 값이 정해지는 이런 식으로 움직이므로. 정리하면 맨 뒤에 값은 정해지므로 매번 맨 뒤의 값을 비교할 필요는 없음.)
<script> function solution(arr){ let answer=arr; for(let i = 0; i < arr.length-1; i ++){ for(j = 0; j < arr.length-i-1; j++){ 3명에서 버블로 비교를 하면 1-2, 2-3 총 2번하면 된다. 여기도 마찬가지. arr.length-1이다. 그러나 외부 for문이 돌수록 마지막 인덱스값이 정해지므로 -i도 해주어야 한다. if(arr[j] > arr[j+1]){ [arr[j], arr[j+1]] = [arr[j+1], arr[j]]; } } } return answer; } let arr=[13, 5, 11, 7, 23, 15]; console.log(solution(arr)); </script>
새로운 개념을 배우는 거라 그냥 문제만 읽고 바로 강의를 들었다. 이렇게 해도 되겠지? 별도 못찍을 때가 있었는데 이제 별은 찍을 수 있으니 발전하긴 한건가..