본문 바로가기

전체 글107

Python 얕은 복사, 깊은 복사 대체로 해당변수를 그대로 가져와 쓰다보면, 얕은 복사가 되어 원래 변수에 영향을 미치게 된다. 이러한 상황을 방지하기 위해 같은 내용의 새로운 주소값을 갖는 변수를 만들게 되는데, 이 때 깊은 복사를 사용한다. 깊은 복사는 python에서는 copy 모듈의 deepcopy 함수를 통해 사용할 수 있다. import copy j = copy.deepcopy(i) 이렇게 하면 기존의 i라는 변수를 깊은 복사한 j라는 새로운 변수를 만들어낸 것이 된다. 2023. 2. 6.
[정렬] 선택정렬 알고리즘 주어진 리스트 중에 최소값을 찾아, 그 값을 맨 앞에 위치한 값과 교체하는 방식으로 자료를 정렬하는 알고리즘 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.
728x90