@@ -14,37 +14,50 @@ public void testFindKthMaxTypicalCases() {
14
14
assertEquals (3 , FindKthNumber .findKthMax (array1 , 3 ));
15
15
assertEquals (4 , FindKthNumber .findKthMax (array1 , 2 ));
16
16
assertEquals (5 , FindKthNumber .findKthMax (array1 , 1 ));
17
+ assertEquals (3 , FindKthNumber .findKthMaxUsingHeap (array1 , 3 ));
18
+ assertEquals (4 , FindKthNumber .findKthMaxUsingHeap (array1 , 2 ));
19
+ assertEquals (5 , FindKthNumber .findKthMaxUsingHeap (array1 , 1 ));
17
20
18
21
int [] array2 = {7 , 5 , 8 , 2 , 1 , 6 };
19
22
assertEquals (5 , FindKthNumber .findKthMax (array2 , 4 ));
20
23
assertEquals (6 , FindKthNumber .findKthMax (array2 , 3 ));
21
24
assertEquals (8 , FindKthNumber .findKthMax (array2 , 1 ));
25
+ assertEquals (5 , FindKthNumber .findKthMaxUsingHeap (array2 , 4 ));
26
+ assertEquals (6 , FindKthNumber .findKthMaxUsingHeap (array2 , 3 ));
27
+ assertEquals (8 , FindKthNumber .findKthMaxUsingHeap (array2 , 1 ));
22
28
}
23
29
24
30
@ Test
25
31
public void testFindKthMaxEdgeCases () {
26
32
int [] array1 = {1 };
27
33
assertEquals (1 , FindKthNumber .findKthMax (array1 , 1 ));
34
+ assertEquals (1 , FindKthNumber .findKthMaxUsingHeap (array1 , 1 ));
28
35
29
36
int [] array2 = {5 , 3 };
30
37
assertEquals (5 , FindKthNumber .findKthMax (array2 , 1 ));
31
38
assertEquals (3 , FindKthNumber .findKthMax (array2 , 2 ));
39
+ assertEquals (5 , FindKthNumber .findKthMaxUsingHeap (array2 , 1 ));
40
+ assertEquals (3 , FindKthNumber .findKthMaxUsingHeap (array2 , 2 ));
32
41
}
33
42
34
43
@ Test
35
44
public void testFindKthMaxInvalidK () {
36
45
int [] array = {1 , 2 , 3 , 4 , 5 };
37
46
assertThrows (IllegalArgumentException .class , () -> FindKthNumber .findKthMax (array , 0 ));
38
47
assertThrows (IllegalArgumentException .class , () -> FindKthNumber .findKthMax (array , 6 ));
48
+ assertThrows (IllegalArgumentException .class , () -> FindKthNumber .findKthMaxUsingHeap (array , 0 ));
49
+ assertThrows (IllegalArgumentException .class , () -> FindKthNumber .findKthMaxUsingHeap (array , 6 ));
39
50
}
40
51
41
52
@ Test
42
53
public void testFindKthMaxLargeArray () {
43
54
int [] array = generateArray (1000 );
44
55
int k = new Random ().nextInt (1 , array .length );
45
56
int result = FindKthNumber .findKthMax (array , k );
57
+ int maxK = FindKthNumber .findKthMaxUsingHeap (array , k );
46
58
Arrays .sort (array );
47
59
assertEquals (array [array .length - k ], result );
60
+ assertEquals (array [array .length - k ], maxK );
48
61
}
49
62
50
63
public static int [] generateArray (int capacity ) {
0 commit comments