본문 바로가기

코딩/알고리즘10

[정렬] 선택정렬 알고리즘 주어진 리스트 중에 최소값을 찾아, 그 값을 맨 앞에 위치한 값과 교체하는 방식으로 자료를 정렬하는 알고리즘 nums = [4, 2, 5, 1, 3] #4부터 1까지 가서 그 다음 숫자와 비교할거임 for i in range(len(nums)-1): minIdx = i #i이후의 숫자부터 맨끝까지 for j in range(i+1, len(nums)): #앞에 있는 숫자가 더 크면 if nums[minIdx] > nums[j]: #작은 숫자를 뒤에 있는 숫자로 지정하고 minIdx = j #자리를 바꿔줄거임 tempNum = nums[i] nums[i] = nums[minIdx] nums[minIdx] = tempNum print(f'nums : {nums}') nums : [1, 2, 5, 4, 3] .. 2023. 1. 31.
[정렬] 삽입정렬 알고리즘 정렬되어 있는 자료 배열과 비교해서, 정렬 위치를 찾는다. [5, 10, 2, 1, 0] -> 리스트 앞의 5, 10이 정렬되어있으므로 2를 5, 10 앞으로 가져온다 [2, 5, 10, 1, 0] -> 2, 5, 10이 정렬되어 있으므로 1을 2앞으로 가져온다 [1, 2, 5, 10, 0] -> 1, 2, 5, 10이 정렬되어 있으므로 0을 1앞으로 가져온다 [0, 1, 2, 5, 10] ascending nums = [5, 10, 2, 1, 0] for i in range(1, len(nums)): j = i - 1 val = nums[i] while nums[j] > val and j >= 0: nums[j+1] = nums[j] j -= 1 nums[j+1] = val print(f'nums : .. 2023. 1. 31.
[정렬] 버블정렬 알고리즘 처음부터 끝까지 인접하는 인덱스의 값을 순차적으로 비교하면서 큰 숫자를 가장 끝으로 옮기는 알고리즘 nums = [10, 2, 7, 21, 0] print(f'not sorted nums : {nums}') length = len(nums)-1 for i in range(length): # 맨 뒤에서 두번째자리 까지만 잡고 비교하므로 for j in range(length-i): if (nums[j] > nums[j+1]): # 둘이 자리바꿈 temp = nums[j] nums[j] = nums[j+1] nums[j+1] = temp # 파이썬에서는 이런 방법도 가능하다 # nums[j], nums[j+1] = nums[j+1], nums[j] print(nums) print(i,'번째 끝') print.. 2023. 1. 27.
[순위] 순위 알고리즘 순위 : 수의 크고 작음을 이용해서 수의 순서를 정하는 것 import random nums = random.sample(range(50, 101), 20) ranks = [0 for i in range(20)] print(f'nums : {nums}') print(f'ranks : {ranks}') for idx, num1 in enumerate(nums): for num2 in nums: if num1 < num2: ranks[idx] += 1 print(f'nums : {nums}') print(f'ranks : {ranks}') for idx, num in enumerate(nums): print(f'num: {num}\t rank: {ranks[idx]}') 2023. 1. 26.
728x90