[알고리즘] [js] bubbleSort

rud285·2일 전
0

[알고리즘]

목록 보기
1/2

bubbleSort

전체배열요소에 대해 인접한 요소와 크기를 비교한 후 크기가 큰 요소를 뒤로 보내고 작은 요소를 앞으로 보내 가장 큰 요소를 맨 뒤로 보낸다.

가장큰수를 마지막으로 보내는 것을 반복을 해야 함

let array = [3,2,1];

// bubblesort 실행 

// [2,3,1]

// [2,1,3] -> 안쪽 반복 끝 

// [1,2,3] 

// return [1,2,3] 

let array2 = [4,3,2,1]

// bubblesort 실행 

// [3,4,2,1]

// [3,2,4,1]

// [3,2,1,4] -> 안쪽 반복 끝 

// [2,3,1,4]

// [2,1,3,4] -> 안쪽 반복 끝 

// 인접한 요소를 비교하고 큰 수를 뒤로보냄 

// n번째, n+1 번째 비교해서 큰수를 뒤로 보냄 

// 배열 길이=4 

// index=2, 2+1 까지만 확인해야 함 -> 바깥 반복문 

// 안쪽반복문은 바깥 반복문이 돌때마다 배열의 뒤쪽부터 정렬이 됨

// 뒤쪽부분은 확인할 필요가 없다. 

var bubbleSort = function(array) {
  var length = array.length;
  var i, j, temp;
  for (i = 0; i < length - 1; i++) { // n번째, n+1 번째 비교해서 큰수를 뒤로 보냄
    // length - 1 까지만 반복해야함 
    // 가장 큰수를 뒤로 보내는 반복문 
    for (j = 0; j < length - 1 - i; j++) { 
 // 안쪽반복문은 바깥 반복문이 돌때마다 배열의 뒤쪽부터 정렬이 됨
 // 바깥 반복문이 한번 돌 때마다 안쪽반복문의 반복횟수를 1씩 차감시킴 
      // 인접한 배열 요소의 크기를 비교하여 자리를 바꾸는 반복문
      if (array[j] > array[j + 1]) { // 두 수를 비교하여 앞 수가 뒷 수보다 크면
        temp = array[j]; // 두 수를 서로 바꿔준다
        array[j] = array[j + 1];
        array[j + 1] = temp;
      }
    }
  }
  return array;
};

profile
개발자

0개의 댓글