File tree 1 file changed +49
-0
lines changed
1 file changed +49
-0
lines changed Original file line number Diff line number Diff line change
1
+ /*
2
+ * @lc app=leetcode id=912 lang=rust
3
+ *
4
+ * [912] Sort an Array
5
+ */
6
+ struct Solution ;
7
+ // @lc code=start
8
+ impl Solution {
9
+ pub fn sort_array ( nums : Vec < i32 > ) -> Vec < i32 > {
10
+ if nums. len ( ) > 1 {
11
+ let ( l, r) = nums. split_at ( nums. len ( ) / 2 ) ;
12
+ let sorted_r = Self :: sort_array ( r. to_vec ( ) ) ;
13
+ let sorted_l = Self :: sort_array ( l. to_vec ( ) ) ;
14
+
15
+ let mut res: Vec < i32 > = nums. into ( ) ;
16
+ let ( mut i, mut j) = ( 0 , 0 ) ;
17
+
18
+ let mut k = 0 ;
19
+ while i < sorted_l. len ( ) && j < sorted_r. len ( ) {
20
+ if sorted_l[ i] <= sorted_r[ j] {
21
+ res[ k] = sorted_l[ i] . clone ( ) ;
22
+ i += 1 ;
23
+ } else {
24
+ res[ k] = sorted_r[ j] . clone ( ) ;
25
+ j += 1 ;
26
+ }
27
+ k += 1 ;
28
+ }
29
+ while i < sorted_l. len ( ) {
30
+ res[ k] = sorted_l[ i] . clone ( ) ;
31
+ i += 1 ;
32
+ k += 1
33
+ }
34
+ while j < sorted_r. len ( ) {
35
+ res[ k] = sorted_r[ j] . clone ( ) ;
36
+ j += 1 ;
37
+ k += 1 ;
38
+ }
39
+ res
40
+ } else {
41
+ nums
42
+ }
43
+ }
44
+ }
45
+ // @lc code=end
46
+ fn main ( ) {
47
+ let v = vec ! [ -2 , 3 , -5 ] ;
48
+ println ! ( "{:?}" , Solution :: sort_array( v) ) ;
49
+ }
You can’t perform that action at this time.
0 commit comments