Skip to content

Commit db039b7

Browse files
committed
merge sort in swift
1 parent 2b2e2f4 commit db039b7

File tree

1 file changed

+45
-0
lines changed

1 file changed

+45
-0
lines changed

sortingAlgo/mergeSort/mergeSort.swift

+45
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
func merge(_ array_1: inout [Int], _ low: Int, _ mid: Int, _ high: Int) {
2+
var i = low
3+
var j = mid + 1
4+
var k = 0
5+
6+
var array_2: [Int] = [Int](repeating: 0, count: high - low + 1)
7+
8+
while i <= mid && j <= high {
9+
if array_1[i] <= array_1[j] {
10+
array_2[k] = array_1[i]
11+
k += 1
12+
i += 1
13+
}
14+
else {
15+
array_2[k] = array_1[j]
16+
k += 1
17+
j += 1
18+
}
19+
}
20+
21+
while i <= mid {
22+
array_2[k] = array_1[i]
23+
k += 1
24+
i += 1
25+
}
26+
27+
while j <= high {
28+
array_2[k] = array_1[j]
29+
k += 1
30+
j += 1
31+
}
32+
33+
for i in low...high {
34+
array_1[i] = array_2[i - low]
35+
}
36+
}
37+
38+
func sort(_ array: inout [Int], _ low: Int, _ high: Int) {
39+
if low < high {
40+
let mid = (low + high) / 2
41+
sort(&array, low, mid)
42+
sort(&array, mid + 1, high)
43+
merge(&array, low, mid, high)
44+
}
45+
}

0 commit comments

Comments
 (0)