@@ -40,14 +40,14 @@ public int[] kSmallestII(int[] array, int k) {
4040 if (array .length == 0 || k == 0 ) {
4141 return new int [0 ];
4242 }
43- quickSelect (array , 0 , array .length - 1 , k - 1 );
43+ quickSelect (array , 0 , array .length - 1 , k - 1 ); // ( [4,8,5,1], 0, 3, 2 )
4444 int [] result = Arrays .copyOf (array , k );
4545 Arrays .sort (result );
4646 return result ;
4747 }
4848
4949 private void quickSelect (int [] array , int left , int right , int target ) {
50- int mid = partition (array , left , right );
50+ int mid = partition (array , left , right ); // mid =
5151 if (mid == target ) {
5252 return ;
5353 } else if (target < mid ) {
@@ -57,12 +57,12 @@ private void quickSelect(int[] array, int left, int right, int target) {
5757 }
5858 }
5959
60- private int partition (int [] array , int left , int right ) {
61- int pivot = array [right ];
62- int start = left ;
63- int end = right - 1 ;
64- while (start <= end ) {
65- if (array [start ] < pivot ) {
60+ private int partition (int [] array , int left , int right ) { // [4,8,5,1], 0, 3
61+ int pivot = array [right ]; // 1
62+ int start = left ; // 0
63+ int end = right - 1 ; // 2
64+ while (start <= end ) { // (0, 2)
65+ if (array [start ] < pivot ) { //
6666 start ++;
6767 } else if (array [end ] >= pivot ) {
6868 end --;
@@ -86,3 +86,17 @@ public static void main(String[] args) {
8686 System .out .println (Arrays .toString (ks .kSmallestII (data , 3 )));
8787 }
8888}
89+
90+
91+
92+ /*
93+ a = [4,8,5,1] k = 3
94+
95+
96+
97+
98+
99+
100+
101+
102+ */
0 commit comments