0823 06-배열

Jang·2022년 8월 23일
0

학원

목록 보기
4/26
post-thumbnail

  • 반복 횟수 -> 2나누고 소수점 이하를 버린다.

    • 이유 : 위의 배열처럼 갯수가 5개 인 경우
      인덱스로 따지면
      data[0] - data[4]
      data[1] - data[3]
      끼리 서로 변경만 하면 되고 가운데 위치한 data[2]는 변경할 필요가 없으므로
      2번만 반복하면 된다.
  • tmp는 temporary의 줄임말인데 임시로 복사하기 위해 선언한 변수.

  • i = 0 일때
    tmp에 data[0]을 복사하고
    기존의 data[0]에는 data[4]를 입력.
    data[4]에는 복사해뒀던 tmp를 입력.


  • i가 마지막 항목을 제외하고 스캔하는 이유
    예를들어 인덱스 data[0]을 편의상 0이라고하고
    0 1 2 3 4를 정렬하려면
  • 0과 1 2 3 4

  • 1과 2 3 4

  • 2와 3 4

  • 3과 4

    이런식으로 비교하면서 값을 서로 교환해나가기 때문

  • 따라서 j는 i의 초기값보다 +1 큰 값으로 시작해서 배열의 마지막값까지를 선택할수 있게 스캔해야한다

  • 그 이후에는 위의 역순배치의 경우와 비슷하게 임시적인 변수 tmp를 이용

  • 비교후 뒤의 값이 크기가 더 작은 경우 값을 바꾸고 그 바꾼값과 또 그 뒤의 값과의 비교를 반복하는 식


/** 출력하기 */
// "\t"  탭키 
// "\n"  줄바꿈
for (let i = 0; i < data.length; i++) {
  let str = "";
  for (let j = 0; j < data[i].length; j++) {
    if (data[i][j] == 0) {
      str += "\t\t";
    } else if (data[i][j] > 0 && data[i][j] < 10) {
      str += data[i][j] + "\t\t"
    } else {
      str += data[i][j] + "\t"
    }
  }

  console.log(str);
}

내 vscode 설정에선 tab 사이즈가 4가 아닌 2여서인지 날짜가 한자리수면 길이가 짧아서 칸이 제대로 정렬이 되지 않아서 data[i][j] == 0\t을 하나 더 추가하고 또 중간에

else if (data[i][j] > 0 && data[i][j] < 10) {
      str += data[i][j] + "\t\t"
    }

를 더해주었다.

0개의 댓글