0...N
이라면,i
' 번째에 왔다면, '0
'~'i-1
' 번째까지 내 앞까지 정렬됨을 보장한다.i
' 번째에 왔다면, 'i+1
'~'N
'까지 뒷정렬을 보장한다.i
번 째에서 멈춰도, 그 '앞' 까진 정렬 보장Quick sort
가 이지만 '' 라고 가정 시,Quick sort
: = Selection sort
2번째까지 하고 멈춤: = A[i]
, A[j]
를 비교하면서, 나보다 작은 element (A[i]
> A[j]
) 발견시 swap!j+1
부터 다시 서칭i == N-1
도착 시 종료import sys
def ascending_sort(N:int, A:list):
for i in range(0,N):
if i == N-1:
break
for j in range(i+1,N):
if A[j]>A[i]:
continue
else:
temp=A[i]
A[i]=A[j]
A[j]=temp
if __name__ == '__main__':
readl=sys.stdin.readline
N=int(readl())
A=list(map(int,readl().split()))
ascending_sort(N,A)
print(*A)
import sys
def descending_sort(N: int, A: list):
for i in range(0, N):
if i==N-1:
break
for j in range(i+1, N):
if A[i]<A[j]:
temp=A[i]
A[i]=A[j]
A[j]=temp
else:
continue
if __name__ == '__main__':
readl=sys.stdin.readline
N=int(readl())
if N == 0:
exit(0)
A=list(map(int,readl().split()))
descending_sort(N,A)
print(*A)
i 번째
까진 보장import sys
GET_NUMS=4 # How many numbers that you want to get it from Array A, in your standard.
def ascending_sort(N:int, A:list):
for i in range(0,N):
if i == N-1:
break
if i == GET_NUMS: # i Cycle을 i가 index 4에 도착하면 끊으면 됨
break
for j in range(i+1,N): # 훑어 보기는 전부 봐야함
if A[i] > A[j]:
temp=A[i]
A[i]=A[j]
A[j]=temp
else:
continue
if __name__ == '__main__':
readl=sys.stdin.readline
N=int(readl())
A=list(map(int,readl().split()))
ascending_sort(N,A)
print(*A[0:GET_NUMS])
import sys
# Find 'GET_NUMS' Upper Nums
GET_NUMS=3
def descending_sort(N: int, A: list):
for i in range(0,N):
if i == N-1:
break
if i == 3:
break
for j in range(i+1,N):
if (A[i][0] < A[j][0]) or (A[i][0] == A[j][0] and A[i][1] > A[j][1]):
temp=A[i]
A[i]=A[j]
A[j]=temp
if __name__ == '__main__':
readl=sys.stdin.readline
N=int(readl())
A=list(map(int,readl().split()))
A_len=len(A)
for i in range(0,A_len):
A[i]=(A[i],i+1)
descending_sort(N,A)
for i in range(0,GET_NUMS):
print(A[i][1],end=' ')
idx: 0
', 'idx: 2/N
', 'idx: N
'이 될수 있음i=0
설정Scenario
import sys
N=None
A=None
def q_sort(left: int, right: int):
if left >= right:
return
P=right
mark=left
for j in range(mark, P):
if A[j] < A[P]:
if j != mark:
temp=A[mark]
A[mark]=A[j]
A[j]=temp
mark+=1
if P != mark:
temp=A[P]
A[P]=A[mark]
A[mark]=temp
q_sort(left,mark-1)
q_sort(mark+1,right)
if __name__ == '__main__':
readl=sys.stdin.readline
N=int(readl())
A=list(map(int,readl().split()))
q_sort(0,N-1)
print(*A)
for j in range(mark, P):
if A[j] < A[P]:
if j != mark:
temp=A[mark]
A[mark]=A[j]
A[j]=temp
mark+=1
for j in range(mark, P):
if (A[j][0] < A[P][0]) or ((A[j][0] == A[P][0]) and (A[j][1] > A[P][1])):
if j != mark:
temp=A[mark]
A[mark]=A[j]
A[j]=temp
mark+=1
구현 시에는 Priority와 반대 부호임