Skip to content

Commit bcf8805

Browse files
committed
study: sorting algorithm
# id: 문제 id를 숫자로 작성 # categories : 해당 문제의 유형을 ,로 구분하여 작성 # tags : 해당 문제의 태그를 ,로 구분하여 작성 # time : 해당 문제 풀이에 걸린 시간을 분단위 숫자로 작성 # try : 해당 문제에 몇번의 시도를 했는지 숫자로 작성 # help: 해당 문제에 외부의 도움을 받았는지 true/false로 작성 # url : 해당 문제의 url을 작성 id: categories: [] tags: [] time: try: help: false url:
1 parent 4ecb475 commit bcf8805

File tree

5 files changed

+97
-0
lines changed

5 files changed

+97
-0
lines changed
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
def bubble_sort(arr):
2+
for i in range(len(arr)):
3+
for j in range(len(arr)-i-1):
4+
if arr[j]>arr[j+1]:
5+
arr[j],arr[j+1]=arr[j+1],arr[j]
6+
print(arr)
7+
8+
arr = [64, 34, 25, 12, 22, 11, 90]
9+
bubble_sort(arr)
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
def selection_sort(arr):
2+
n=len(arr)
3+
for i in range(n):
4+
min_idx=i
5+
for j in range(i,n):
6+
if arr[j]<arr[min_idx]:
7+
min_idx=j
8+
arr[i],arr[min_idx]=arr[min_idx],arr[i]
9+
print(arr)
10+
11+
arr = [29, 10, 14, 37, 13]
12+
selection_sort(arr)
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
def insertion_sort(arr):
2+
n=len(arr)
3+
for i in range(n):
4+
current=arr[i]
5+
j=i-1
6+
while j>=0 and arr[j]>current:
7+
arr[j+1]=arr[j]
8+
j-=1
9+
arr[j+1]=current
10+
11+
print(arr)
12+
13+
arr = [12, 11, 13, 5, 6]
14+
insertion_sort(arr)

src/sortingAlgorithms/4_merge_sort.py

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
def merge_sort(arr):
2+
if len(arr)<=1:
3+
return arr
4+
mid=len(arr)//2
5+
6+
left=merge_sort(arr[:mid])
7+
right=merge_sort(arr[mid:])
8+
9+
return merge(left,right)
10+
11+
def merge(left,right):
12+
13+
i=j=0
14+
merged=[]
15+
while i<len(left) and j<len(right):
16+
if left[i]<right[j]:
17+
merged.append(left[i])
18+
i+=1
19+
else:
20+
merged.append(right[j])
21+
j+=1
22+
23+
merged.extend(left[i:])
24+
merged.extend(right[j:])
25+
26+
return merged
27+
28+
29+
arr = [38, 27, 43, 3, 9, 82, 10]
30+
sorted_arr=merge_sort(arr)
31+
print(sorted_arr)
32+
33+
34+
35+
36+

src/sortingAlgorithms/5_quick_sort.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
def quick_sort(low,high,arr):
2+
if high-low+1==1:
3+
return
4+
mid=low+(high-low)//2
5+
pivot=arr[mid]
6+
left=low
7+
right=high
8+
9+
while left!=right:
10+
while arr[right]>pivot:
11+
right-=1
12+
13+
while arr[left]<pivot:
14+
left+=1
15+
if arr[left]>arr[right]:
16+
arr[right],arr[left]=arr[left],arr[right]
17+
18+
if right-1>low: quick_sort(low,right-1,arr)
19+
if right+1<high: quick_sort(right+1,high,arr)
20+
21+
22+
arr = [10, 7, 8, 9, 1, 5]
23+
quick_sort(0,len(arr)-1,arr)
24+
print(arr)
25+
26+

0 commit comments

Comments
 (0)