정수를 요소로 갖는 배열을 입력받아 오름차순으로 정렬하여 리턴해야 합니다.
버블 정렬(bubble sort)로 구현해라
수행 시간을 단축할 수 있도록 코드를 수정해보세요.
버블정렬을 인접해있는 두개를 비교해서 조건에 맞으면 바꾸고 계속 배열끝까지 진행하는 방법으로
이중 반복문으로 작성한다.
여기서 주의할점은 i번째는 끝까지 갈 필요없다.
j번째는 배열의 i일때 바뀐다.
function solution(arr){
//버블정렬
// 인접해있는걸 비교한다.
// 끝까지 비교하는것이 아니라
// 끝에서 앞에 앞에 까지만 비교하면 된다.
// 배열 정렬을 신문법이 존재한다.
let answer=arr;
for(let i = 0; i < arr.length - 1; i++){
for(let j = 0; j < arr.length - i - 1; j++){
if(arr[j] > arr[j + 1]){
[arr[j], arr[j + 1]] = [arr[j+1], arr[j]]
}
}
}
return answer;
}
일반적으로 풀게 되면 계속
중간에 바뀌면 증감식을 넣어주고
안바뀐다면 굳이 반복하지 말라고 한다.
const bubbleSort = function (arr) {
// TODO: 여기에 코드를 작성합니다.
//버블정렬
// 인접해있는걸 비교한다.
// 끝까지 비교하는것이 아니라
// 끝에서 앞에 앞에 까지만 비교하면 된다.
let result = arr;
for(let i = 0; i < arr.length - 1; i++){
let swap = 0;
for(let j = 0; j < arr.length - i - 1; j++){
if(arr[j] > arr[j + 1]){
swap++
[arr[j], arr[j+1]] = [arr[j+1], arr[j]]
}
}
if(swap === 0){
break;
}
}
return result;
};