005. bubbleSort

BenKim·2020년 6월 27일
0

algorithm

목록 보기
4/7

bubbleSort
Bubble sort는 컴퓨터 과학의 가장 기본적인 알고리즘입니다. 배열의 첫 번째 요소(element)와 두 번째 요소를 비교함으로써 시작합니다. 첫 번째 요소가 두 번째 요소보다 크면, 두 요소의 위치를 바꿉니다. (swap) 이후 두 번째 요소와 세 번째 요소를 비교하고, 이를 마지막까지 반복합니다. 위와 같은 방식을 통해서 가장 큰 요소가 가장 마지막으로 밀려납니다. 이 모습이 마치 "거품이 밀려 올라가는 것과 같은 모습" 이여서 Bubble sort라 합니다. 가장 큰 요소가 마지막으로 밀려간 후에는, 다시 첫 요소부터 지금까지의 정렬을 배열의 모든 요소가 크기 순서대로 정렬될 때까지 반복됩니다.
Bubble sort 방식으로 배열을 인자로 받아 크기 순서대로 정렬된 배열을 반환하는 함수를 만드세요. 자바스크립트의 내장 함수 (Array.prototype.sort)는 사용을 금지합니다.
질문: 여러분이 작성한 알고리즘의 시간 복잡도는 어떻게 될까요? 아직 잘 모르겠다면, 구글링보다는 직관적으로 얼마나 걸릴지 고민해보세요.

내가 작성한 코드

// i를 선언하여, 테스트를 원활하게 할 수 있습니다.
let i;

// 헬퍼 함수가 필요하다면 얼마든지 만들어서 사용하세요!

const bubbleSort = function(array) {
  
  for(let k=0; k<array.length; k++){
  for(let j=0; j<array.length; j++){
      if(array[j]>array[j+1]){
          i=array[j+1];
          array[j+1]= array[j];
          array[j]=i;
      }
  }
  
  }
  return array;
};

처음으로 문제의 설명과 같은 코드를 만들었었다. 0,1번째요소비교, 1,2번째 요소비교, 2,3번째 요소비교를 끝까지 하는 코드였는데 결과적으로 배열 전체적으로 정렬은 안됐었다. 하지만 항상 제일큰수를 뒤로 보내는 기능은 작동하여 배열의 횟수만큼 이 기능을 사용해서 매번 그회차의 가장큰수를 뒤로 보내는 함수를 만들었다.

profile
연습과 자신감

0개의 댓글