2017-01-11 5 views
0

거품 무늬가 어떻게 작동하는지 이해하려고합니다. 나는 여기에 대해 여러 스레드가 있다는 것을 알고 있지만 그들은 기능의 모든 다른 버전이며 좋은 일을 초보자에게 설명하지 않습니다. - 1 - 내가파이썬 3의 bubblesort 함수

def bubblesort(mylist): 
for i in range(0, len(mylist) - 1): 
    for j in range(0, len(mylist) - 1 - i): 
     if mylist[j] > mylist[j+1]: 
      mylist[j], mylist[j+1] = mylist[j+1], mylist[j] 
return mylist 

누군가가 나에게 3 행의 목적을 설명 할 수는 LEN (myList에)는 말한다 : 나는 유튜브에 거품 정렬이 간결한 코드를 발견? 왜 우리가 나 빼는거야? mylist는 무엇을합니까?

저는 초보자 프로그래머입니다.이 루프가 어떻게 작동하는지 더 잘 이해하려고 노력하고 있습니다.

+0

이 웹 사이트는 정렬 알고리즘을 이해하는 좋은 방법입니다. https://visualgo.net/sorting – shash678

+1

이것은 최적이 아닌 구현입니다 ... –

+0

그래서 최적의 구현은 무엇입니까? –

답변

2

각 반복 후에 마지막 번호가 정렬되기 때문입니다. 이 목록을 자세히 살펴 보겠습니다.

[0, 2, 5, 7, 3, 1] 

첫 번째 정렬 후에는 가장 큰 숫자가 정렬됩니다. 두 번째 정렬 후 두 번째로 큰 숫자가 정렬됩니다. 또는 기본적으로 인덱스 len(myList) - 1 - iteration의 번호는 이미 정렬되어 올바른 위치에 있습니다. 첫 번째 정렬 후에 가장 큰 숫자가 제 위치에 있습니다. 가장 큰 숫자의 인덱스는 이제 len(myList) - 1입니다. 두 번째로 큰 숫자가 올바르게 배치됩니다.이 iteration은 0에서 1로 바뀌므로 두 번째로 큰 숫자의 인덱스는 이제 len(myList) - 1 - iteration 또는 len(myList) - 1 - 1이며 가장 큰 숫자 바로 앞에옵니다.

+0

좋아요, 그래서 반복 번호가 될 것입니다. 각 반복마다 그 수는 1 씩 증가합니까? 마지막 번호가 이미 정렬 되었기 때문에 다음 반복에서 제외하므로 결과적으로 색인 0에서 종료되고 종료됩니다. –

+0

@RyanPostell 맞습니다 –

+0

끝내 주셔서 감사합니다! –