국비지원/백엔드

230317 알고리즘 - 버블 정렬, 선택 정렬

선SEON 2023. 3. 17. 10:17

<버블 정렬> 

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Bubble Sort</title>
  </head>
  <body>
    <script>
      var a = [10, 3, 1, 4, 2]; // 시작 위치에서 하나씩 뒤로 반복 비교
      for (var i = 0; i < a.length - 1; i++) {
        document.write("i = " + i + "<br/>");
        // 시작위치를 하나씩 앞으로 반복 비교
        for (var j = a.length - 1; j > i; j--) {
          document.write("j = " + j + "<br/>");
          // 만약 이웃하는 두 값 중 뒤 값이 더 작다면
          if (a[j] < a[j - 1]) {
            //교환 알고리즘(부등호로 오름차순, 내림차순 결정)
            var tmp = a[j];
            a[j] = a[j - 1];
            a[j - 1] = tmp;
          }
        }
      }
      document.write("Bubble sort = " + a);
    </script>
  </body>
</html>

 

<선택 정렬>

 

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Selection Sort 선택 정렬</title>
  </head>
  <body>
    <script>
      var a = [10,3,1,4,2];
      for (var i = 0; i < a.length-1; i++){
          var min = a[i]; //임시 최소값
          var k = i; //임시 최소값의 위치 지정
          for (var j = i + 1; j < a.length; j++){
              if(min > a[j]){
                  min = a[j]; //최소값 변경
                  k = j; // 최소값 위치
              }
          }
          //교환 알고리즘(swap)
          var tmp = a[i];
          a[i] = a[k];
          a[k] = tmp;
      }
      document.write("selection sort" + a);
    </script>
  </body>
</html>