<알고리즘?알고싶음!>-7

이지선·2021년 8월 22일
1

알고리즘

목록 보기
7/10
post-thumbnail

버블정렬(Bubble Sort)
버블 정렬은 인접한 데이터를 교환해서 정렬하는 알고리즘입니다. 알고리즘의 정렬되는 모습이 마치 거품처럼 보인다고 해서 붙여진 이름입니다.

아래와 같은 정렬되지 않은 수가 있을 때, index 0 <-> 1 부터 교환하기 시작합니다. 인접한 두 수를 비교하여 더 큰 것을 우측으로 이동시킵니다. 6 5 3 2 8 -> 5 6 3 2 8
그 다음은 index 1 <-> 2 5 6 3 2 8 -> 5 3 6 2 8

그 다음은 index 2 <-> 3 5 3 6 2 8 -> 5 3 2 6 8

그 다음은 index 3 <-> 4 5 3 2 6 8 -> 5 3 2 6 8 이렇게 제일 마지막 두 수 까지 비교하면, 제일 큰 수가 제일 마지막 index에 위치하는 것을 알 수 있습니다.

🤓문제

nums라는 배열을 주면, 버블정렬 알고리즘으로 배열을 정렬해주세요.
let nums = [6, 5, 3, 2, 8];

👉풀이 방법

const bubbleSort = nums => {
  
   for(i=0; i<nums.length; i++){
    for(j=0; j<nums.length-1; j++){
      if(nums[j]>nums[j+1]){
        let a = nums[j+1];
        nums[j+1]=nums[j]; 
        nums[j]=a;
      }
    }
  }
  return nums;
}

두개의 반복문을 이용하여 연달아있는 두 수 중에서
if(nums[j]>nums[j+1])
nums[j](앞에 있는 수)가 nums[j+1](뒤에 있는 수)보다 클 경우에는
let a = nums[j+1];//a=5
nums[j+1]를 변수 a에 담아준 뒤,
nums[j+1]=nums[j];
nums[j+1]에 nums[j]인 6을 할당하고
nums[j]=a;
nums[j]에 변수 a를 할당해주면 된다.

이런식으로 반복문을 돌면 제일 큰 수가 마지막 index에 위치하여
[ 2, 3, 5, 6, 8 ]가 출력된다.

profile
👩🏻‍💻

0개의 댓글

관련 채용 정보