Skip to content

Commit 80feb3a

Browse files
authored
Merge pull request #532 from remlostime/heap-sort-swift
[Swift 4] Update Heap Sort
2 parents 5ea9de2 + 33b4078 commit 80feb3a

File tree

4 files changed

+242
-235
lines changed

4 files changed

+242
-235
lines changed

Heap Sort/HeapSort.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
extension Heap {
22
public mutating func sort() -> [T] {
33
for i in stride(from: (elements.count - 1), through: 1, by: -1) {
4-
swap(&elements[0], &elements[i])
4+
elements.swapAt(0, i)
55
shiftDown(0, heapSize: i)
66
}
77
return elements

Heap Sort/Tests/HeapSortTests.swift

+24-17
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,33 @@
11
import XCTest
22

33
class HeapSortTests: XCTestCase {
4-
func testSort() {
5-
var h1 = Heap(array: [5, 13, 2, 25, 7, 17, 20, 8, 4], sort: >)
6-
let a1 = h1.sort()
7-
XCTAssertEqual(a1, [2, 4, 5, 7, 8, 13, 17, 20, 25])
4+
func testSwift4() {
5+
// last checked with Xcode 9.0b4
6+
#if swift(>=4.0)
7+
print("Hello, Swift 4!")
8+
#endif
9+
}
10+
11+
func testSort() {
12+
var h1 = Heap(array: [5, 13, 2, 25, 7, 17, 20, 8, 4], sort: >)
13+
let a1 = h1.sort()
14+
XCTAssertEqual(a1, [2, 4, 5, 7, 8, 13, 17, 20, 25])
815

9-
let a1_ = heapsort([5, 13, 2, 25, 7, 17, 20, 8, 4], <)
10-
XCTAssertEqual(a1_, [2, 4, 5, 7, 8, 13, 17, 20, 25])
16+
let a1_ = heapsort([5, 13, 2, 25, 7, 17, 20, 8, 4], <)
17+
XCTAssertEqual(a1_, [2, 4, 5, 7, 8, 13, 17, 20, 25])
1118

12-
var h2 = Heap(array: [16, 14, 10, 8, 7, 8, 3, 2, 4, 1], sort: >)
13-
let a2 = h2.sort()
14-
XCTAssertEqual(a2, [1, 2, 3, 4, 7, 8, 8, 10, 14, 16])
19+
var h2 = Heap(array: [16, 14, 10, 8, 7, 8, 3, 2, 4, 1], sort: >)
20+
let a2 = h2.sort()
21+
XCTAssertEqual(a2, [1, 2, 3, 4, 7, 8, 8, 10, 14, 16])
1522

16-
let a2_ = heapsort([16, 14, 10, 8, 7, 8, 3, 2, 4, 1], <)
17-
XCTAssertEqual(a2_, [1, 2, 3, 4, 7, 8, 8, 10, 14, 16])
23+
let a2_ = heapsort([16, 14, 10, 8, 7, 8, 3, 2, 4, 1], <)
24+
XCTAssertEqual(a2_, [1, 2, 3, 4, 7, 8, 8, 10, 14, 16])
1825

19-
var h3 = Heap(array: [1, 2, 3, 4, 5, 6], sort: <)
20-
let a3 = h3.sort()
21-
XCTAssertEqual(a3, [6, 5, 4, 3, 2, 1])
26+
var h3 = Heap(array: [1, 2, 3, 4, 5, 6], sort: <)
27+
let a3 = h3.sort()
28+
XCTAssertEqual(a3, [6, 5, 4, 3, 2, 1])
2229

23-
let a3_ = heapsort([1, 2, 3, 4, 5, 6], >)
24-
XCTAssertEqual(a3_, [6, 5, 4, 3, 2, 1])
25-
}
30+
let a3_ = heapsort([1, 2, 3, 4, 5, 6], >)
31+
XCTAssertEqual(a3_, [6, 5, 4, 3, 2, 1])
32+
}
2633
}

Heap Sort/Tests/Tests.xcodeproj/project.pbxproj

+2-2
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,7 @@
230230
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks";
231231
PRODUCT_BUNDLE_IDENTIFIER = swift.algorithm.club.Tests;
232232
PRODUCT_NAME = "$(TARGET_NAME)";
233-
SWIFT_VERSION = 3.0;
233+
SWIFT_VERSION = 4.0;
234234
};
235235
name = Debug;
236236
};
@@ -242,7 +242,7 @@
242242
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks";
243243
PRODUCT_BUNDLE_IDENTIFIER = swift.algorithm.club.Tests;
244244
PRODUCT_NAME = "$(TARGET_NAME)";
245-
SWIFT_VERSION = 3.0;
245+
SWIFT_VERSION = 4.0;
246246
};
247247
name = Release;
248248
};

0 commit comments

Comments
 (0)