파이썬의 버블정렬에 관하여 질문드립니다!
조회수 496회
def sorting_list(list_a,sorting):
for i in range(len(list_a)+1):
for j in range(len(list_a)-i-1):
if sorting==0:
if list_a[j+1]>list_a[j]:
tmp = list_a[j+1]
list_a[j+1] = list_a[j]
list_a[j] = tmp
else:
if list_a[j+1]<list_a[j]:
tmp = list_a[j+1]
list_a[j+1] = list_a[j]
list_a[j] = tmp
list_a = [10,9,1,4,8,6,11,12]
list_a = []
tmp = 0
sorting = -1
while True:
sorting = int(input('정렬방식 오름차순 : 0\n정렬방식 내림차순 : 1\n숫자를 입력하세요 :'))
if sorting == 0 or sorting == 1:
break;
else:
print("숫자를 다시 입력하세요")
while True:
tmp = int(input('숫자를 입력하세요 : '))
if tmp == -1:
break;
list_a.append(tmp)
sorting_list(list_a,sorting)
print(list_a)
안녕하세요..대학교 2학년 생입니다.
정렬이 정확하게 되어 나오지 않습니다.
무엇인지 문제인지 정확하게 판단하기 힘들어서 질문드립니다.
저에겐 어려운 문제입니다.. 화를 내지 말아주세요..
감사합니다.
1 답변
-
질문자님은 남들의 코드를 그냥 주워다 쓰는 분은 아닌 것 같군요! 훌륭합니다. 자 그러면 이제 남들의 모범사례 코드를 봅시다.
보아하니 크게 2가지 같은데요.
- 첫번째
for
는range(생략+1)
이 아니라range(생략-1)
을 순회해야 할 것 같군요. - 맨 끝의
else
블록은if sorting==0
에 대한 else 처리가 아닐까 싶네요. 그렇다면 전체적으로 들여쓰기를 한 단계 줄여야겠지요.
잘 연구해 보세요! 거의 다 왔습니다.
- 첫번째
댓글 입력