1. 선형검색
선형으로 나열되어 있는 데이터를 순차적으로 스캔하면서 원하는 값을 검색
nums = [4,7,10,2,4,7,0,2,7,3,9]
searchNum =7
nums_dic = []
searchResultIdx = -1
searchResultIdxs = []
nums.append(searchNum)
n = 0
while True:
if nums[n] == searchNum:
if n != len(nums)-1:
searchResultIdx = n
break
n += 1
n = 0
while True:
if nums[n] == searchNum:
if n != len(nums) - 1:
searchResultIdxs.append(n)
else:
break
n += 1
print(f'nums : {nums}')
print(f'nums length : {len(nums)}')
print(f'searchResultIdxs : {searchResultIdxs}')
print(f'len(searchResultIdxs) : {len(searchResultIdxs)}')
if searchResultIdx < 0:
print('not search index')
else:
print(f'search index : {searchResultIdx}')
2. 이진검색
정렬되어 있는 데이터의 중앙값과 찾는 값을 비교하면서 원하는 값을 검색
datas = [1,2,3,4,5,6,7,8,9,10,11]
print(f'datas : {datas}')
print(f'datas length : {len(datas)}')
searchData = int(input('찾으려는 정수 입력:'))
searchResultIdx = -1
staIdx = 0
endIdx = len(datas)-1
midIdx = (staIdx + endIdx) // 2
midVal = datas[midIdx]
while searchData <= datas[len(datas) -1] and searchData >= datas[0]:
if searchData == datas[len(datas)-1]:
searchResultIdx = len(datas)-1
break
if searchData == datas[0]:
searchResultIdx = 0
break
if searchData > midVal:
staIdx = midIdx
midIdx = (staIdx + endIdx) // 2
midVal = datas[midIdx]
print(f'midIdx : {midIdx}')
elif searchData < midVal:
endIdx = midIdx
midIdx = (staIdx + endIdx) // 2
midVal = datas[midIdx]
print(f'midIdx : {midIdx}')
elif searchData == midVal:
searchResultIdx = midIdx
break
print('찾으려는 값의 인덱스 : {}'.format(searchResultIdx))
3. 순위
수의 크고 작음을 이용해서 수의 순서를 정하는 것
중첩 for문 이용하여 모든 수를 비교
import random
nums = random.sample(range(50, 101), 20)
ranks = [0 for i in range(20)]
print(nums)
print(ranks)
for idx, num1 in enumerate(nums):
for num2 in nums:
if num1 < num2:
ranks[idx] += 1
print(nums)
print(ranks)
for idx, num in enumerate(nums):
print(f'nums : {num} \t ranks : {ranks[idx] + 1}')
4. 버블정렬
처음부터 끝까지 인접하는 인덱스의 값을 순차적으로 비교하면서 큰 숫자를 가장 끝으로 옮기는 알고리즘
nums = [10,2,7,21,0]
print(f'not sorted nums : {nums}')
length = len(nums)
for i in range(length):
for j in range(length-1):
if nums[j] > nums[j+1]:
nums[j], nums[j+1] = nums[j+1], nums[j]
print(nums)
print()
print(f'sorted nums : {nums}')