J o e
JoE's StOrY
J o e
  • 분류 전체보기 (206)
    • workSpace (184)
      • 도메인 지식 (2)
      • ALGORITHM (39)
      • ANDROID (3)
      • JS (0)
      • JAVA (21)
      • MYSQL (6)
      • NETWORK (3)
      • PYTHON (91)
      • LINUX (9)
      • PROJECT (4)
    • Others (20)
      • Opic (1)
      • myLife (17)
      • popSong (1)
      • 정보처리기사 (1)
    • 훈빠의 특강 (0)
      • opencv (0)
      • python (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • The code with long statements is⋯
  • 매일 매일이 행복하고 밝은 날이 될거에요

인기 글

태그

  • java
  • 이미지 연산
  • DTO
  • 태블릿 연동
  • Python
  • sort_value
  • linearclassification
  • read_html
  • Fully Connected Network
  • 넘파이함수
  • dao
  • numpy
  • sort_index
  • 단어의 개수
  • How to create a GUI in Java with JFrame?
  • full loss
  • ㅖ43
  • 파이썬
  • MySQL
  • 넘파이 문제

최근 댓글

최근 글

티스토리

J o e

WHY?

[Python] bubble, insert, select sorting + 이진탐색
workSpace/PYTHON

[Python] bubble, insert, select sorting + 이진탐색

2020. 12. 26. 20:12
n = [9, 2, 4, 1, 10, 8, 6, 5, 7, 3]
# bubble sort

for i in range(0, len(n) - 1):
    for j in range(0, len(n) - 1 - i):
        if n[j] > n[j + 1]:
            tmp = n[j]
            n[j] = n[j + 1]
            n[j + 1] = tmp
print('bubble sorting : ', n)
n = [8, 3, 6, 10, 9, 1, 7, 2, 4, 5]
print(n)
search_num = int(input('search_num:'))

# i가 0-n까지 if n[i]==search_num 을 만족하는 방이 있는가를 비교
flag = True
for i in range(0, len(n)):
    if search_num == n[i]:
        print(i, '번째 방에 있음')
        flag = False  # flag가 True이면 값이 없다. False이면 찾았다
        break

if flag == True:
    print('not found')

# insert sort

for i in range(1, len(n)):  # i:자기 자리 찾을 값의 위치
    tmp = n[i]  # i위치의 값이 지워지지 않게 tmp 옮겨놓음
    j = i - 1  # j: i의 앞 위치로 i값의 위치를 찾기위해 비교할 대상의 위치
    while j >= 0 and n[j] > tmp:
        n[j + 1] = n[j]  # j위치의 값을 뒤로 한칸 이동
        j -= 1  # j를 한칸 앞으로 이동
    j += 1
    n[j] = tmp
print('insert sorting', n)

n = [8, 3, 6, 10, 9, 1, 7, 2, 4, 5]
print('select sorting 예제 : ', n)
# select sort
for i in range(0, len(n) - 1):  # i: 정렬할 위치
    min = i  # min: 최소값의 위치. 초기값으로 i값 할당
    for j in range(i + 1, len(n)):  # j: 최소값을 찾기 위해 한칸씩 위치 이동할 인덱스로 사용
        if n[min] > n[j]:  # min 위치의 값, 즉 최소값보다 더 작은 값을 만나면(j번째 방에서)
            min = j  # 최소값의 위치를 j로 변경. 이 동작을 j가 리스트 끝까지 도달할때까지 반복
    if min != i:  # 60번줄에서 min에 i 값을 할당했기 때문에 min이 이동하지 않았다면 i에 최소값이 있는 경우
        tmp = n[min]  # 위 경우에는 자리 바꿀 필요없음
        n[min] = n[i]  # 그런데 min과 i가 같지 않다면 min이 최소값 있는 위치로 이동한 것이고 그 최소값이 i위치의
        n[i] = tmp  # 값으로 들어가야 함. 그러므로 min과 i가 같지 않으면 두 위치의 값을 swap

print('select sorting', n)
# 이진 탐색
search_num = int(input('[이진 탐색]search_num:'))
f = 0  # f: 리스트 검색 시작위치
l = len(n) - 1  # l: 리스트 검색 마지막위치
while f <= l:  # 시작위치와 끝위치가 역전되지 않는한 반복
    m = (f + l) // 2  # 리스트 중간 위치 찾기
    if n[m] > search_num:  # 중간값보다 찾는 값이 작으면 찾는 값이 중간값 앞에 있음
        l = m - 1  # l를 중간 앞으로 이동
    elif n[m] < search_num:  # 중간값보다 찾는 값이 크면 찾는 값이 중간값 뒤에 있음
        f = m + 1  # f를 중간값 뒤로 이동
    else:  # n[m]==search_num 인 경우로 m번째 방에서 찾음을 의미
        print('found. idx:', m)  # break로 루프 빠져나옴
        break

if f > l:  # f>l은 위 루프에서 break로 종료되지 않았음을 의미하고 이는 찾는 값이 없음을 의미
    print('not found')

'workSpace > PYTHON' 카테고리의 다른 글

[Python] 제품입출력 프로그램 (MVC pattern)  (0) 2020.12.26
[Python] 성적입출력 프로그램 (MVC pattern)  (0) 2020.12.26
[Python] 리스트 요소의 합과 평균, 최대값, 최소값 출력하기.  (0) 2020.12.26
[Python] 기본 문법. (복붙해서 사용하기)  (0) 2020.12.26
[Python][Tkinter] tkinter를 이용한 영단어 프로그램  (0) 2020.12.26
    'workSpace/PYTHON' 카테고리의 다른 글
    • [Python] 제품입출력 프로그램 (MVC pattern)
    • [Python] 성적입출력 프로그램 (MVC pattern)
    • [Python] 리스트 요소의 합과 평균, 최대값, 최소값 출력하기.
    • [Python] 기본 문법. (복붙해서 사용하기)
    J o e
    J o e
    나의 과거를 기록합니다.

    티스토리툴바