Skip to content

Commit d253abc

Browse files
Create 912 - Sort Array
1 parent 655f90c commit d253abc

File tree

1 file changed

+49
-0
lines changed

1 file changed

+49
-0
lines changed

Diff for: rust/0912-sort-an-array.rs

+49
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
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+
}

0 commit comments

Comments
 (0)