알고리즘 #2 버블정렬

Han Lee·2022년 11월 25일
0

버블 정렬 n과 n-1끼리 순서를 바꾸며 정렬하는 정렬방법
예)4,6,2,9,1을 오름차순 정렬한다 했을때
->1단계 4,6,2,9,1 4와 6을 비교 4<6 그대로둔다.
->2단계 4,6,2,9,1 6과 2을 비교 6>2 서로 교체한다.
->3단계 4,2,6,9,1 6과 9를 비교 6<9 그대로둔다.
->4단계 4,2,6,9,1 9과 1을 비교 9>1 서로 교체한다.
한 바뀌 돌았다. 4,2,6,1,9 -> 큰게 뒤로가도록 되었다.
반복이 될때 마다 마지막은 비교 할 필요가 없게 된다.
범위 조건 : 다음 반복을 할때마다 마지막은 반복하지 않게 범위 설정

a =[4,6,2,9,1]
n =len(a) #a의 길이 루프 카운트 변수
for i in range(n): # a를 순차적으로 돌겠다.
	#한개씩 줄어들면서 반복하겠다.
	for j in range(n  -i -1):
		#앞의 원소가 뒤의 원보다 크면
		if a[j] > a[j+1]:
			#둘이 서로 위치를 바꾼다
			a[j], a[j+1] = a[j+1],a[j]
	print(a)

2차원 데이터를 사용하기 위해서 2중 루프를 사용
바깥 루프 - 이 반복을 총 몇 번시킬건지
안쪽 루프 - 무엇을 반복할 지
바깥에서 0을 주면 안에서는 n-1-i 5-1-0 = 4 -> 0~3까지 범위를 설정하게 된다.
46->62->69->91 총 4번 범위 만큼 정렬하게 된다.
1을 준다면 n-1-1 = 3 -> 0~2까지
42619가 42->46->61로 3번 정렬한다. 이때 마지막은 정렬을 안하게 되는데 이는 1만큼 빼기 때문이다. 만약 1를 빼지 않는다면
n-1 = 4 , n-2 =3 n-3 =2 로 마지막이 이미 정렬이 되었는데도 무의미 하게 계속 비교를하게 된다.

profile
렌덤형 인간

0개의 댓글