File tree Expand file tree Collapse file tree 4 files changed +200
-0
lines changed
solution/0900-0999/0912.Sort an Array Expand file tree Collapse file tree 4 files changed +200
-0
lines changed Original file line number Diff line number Diff line change @@ -252,6 +252,76 @@ var sortArray = function (nums) {
252
252
};
253
253
```
254
254
255
+ #### Rust
256
+
257
+ ``` rs
258
+ impl Solution {
259
+ pub fn sort_array (mut nums : Vec <i32 >) -> Vec <i32 > {
260
+ let n = nums . len ();
261
+ Self :: quick_sort (& mut nums , 0 , n - 1 );
262
+ return nums ;
263
+ }
264
+
265
+ fn quick_sort (nums : & mut Vec <i32 >, left : usize , right : usize ) {
266
+ if left >= right {
267
+ return ;
268
+ }
269
+ let mut i = left as i32 - 1 ;
270
+ let mut j = right as i32 + 1 ;
271
+ let pivot = nums [left ];
272
+ while i < j {
273
+ loop {
274
+ i += 1 ;
275
+ if nums [i as usize ] >= pivot {
276
+ break ;
277
+ }
278
+ }
279
+ loop {
280
+ j -= 1 ;
281
+ if nums [j as usize ] <= pivot {
282
+ break ;
283
+ }
284
+ }
285
+ if i < j {
286
+ nums . swap (i as usize , j as usize );
287
+ }
288
+ }
289
+ Self :: quick_sort (nums , left , j as usize );
290
+ Self :: quick_sort (nums , j as usize + 1 , right );
291
+ }
292
+ }
293
+ ```
294
+
295
+ #### Kotlin
296
+
297
+ ``` kotlin
298
+ class Solution {
299
+ fun sortArray (nums : IntArray ): IntArray {
300
+ fun quickSort (left : Int , right : Int ) {
301
+ if (left >= right) {
302
+ return
303
+ }
304
+ var i = left - 1
305
+ var j = right + 1
306
+ val pivot = nums[left]
307
+ while (i < j) {
308
+ while (nums[++ i] < pivot) ;
309
+ while (nums[-- j] > pivot) ;
310
+ if (i < j) {
311
+ val temp = nums[i]
312
+ nums[i] = nums[j]
313
+ nums[j] = temp
314
+ }
315
+ }
316
+ quickSort(left, j)
317
+ quickSort(j + 1 , right)
318
+ }
319
+ quickSort(0 , nums.size - 1 )
320
+ return nums
321
+ }
322
+ }
323
+ ```
324
+
255
325
<!-- tabs: end -->
256
326
257
327
<!-- solution: end -->
Original file line number Diff line number Diff line change @@ -247,6 +247,76 @@ var sortArray = function (nums) {
247
247
};
248
248
```
249
249
250
+ #### Rust
251
+
252
+ ``` rs
253
+ impl Solution {
254
+ pub fn sort_array (mut nums : Vec <i32 >) -> Vec <i32 > {
255
+ let n = nums . len ();
256
+ Self :: quick_sort (& mut nums , 0 , n - 1 );
257
+ return nums ;
258
+ }
259
+
260
+ fn quick_sort (nums : & mut Vec <i32 >, left : usize , right : usize ) {
261
+ if left >= right {
262
+ return ;
263
+ }
264
+ let mut i = left as i32 - 1 ;
265
+ let mut j = right as i32 + 1 ;
266
+ let pivot = nums [left ];
267
+ while i < j {
268
+ loop {
269
+ i += 1 ;
270
+ if nums [i as usize ] >= pivot {
271
+ break ;
272
+ }
273
+ }
274
+ loop {
275
+ j -= 1 ;
276
+ if nums [j as usize ] <= pivot {
277
+ break ;
278
+ }
279
+ }
280
+ if i < j {
281
+ nums . swap (i as usize , j as usize );
282
+ }
283
+ }
284
+ Self :: quick_sort (nums , left , j as usize );
285
+ Self :: quick_sort (nums , j as usize + 1 , right );
286
+ }
287
+ }
288
+ ```
289
+
290
+ #### Kotlin
291
+
292
+ ``` kotlin
293
+ class Solution {
294
+ fun sortArray (nums : IntArray ): IntArray {
295
+ fun quickSort (left : Int , right : Int ) {
296
+ if (left >= right) {
297
+ return
298
+ }
299
+ var i = left - 1
300
+ var j = right + 1
301
+ val pivot = nums[left]
302
+ while (i < j) {
303
+ while (nums[++ i] < pivot) ;
304
+ while (nums[-- j] > pivot) ;
305
+ if (i < j) {
306
+ val temp = nums[i]
307
+ nums[i] = nums[j]
308
+ nums[j] = temp
309
+ }
310
+ }
311
+ quickSort(left, j)
312
+ quickSort(j + 1 , right)
313
+ }
314
+ quickSort(0 , nums.size - 1 )
315
+ return nums
316
+ }
317
+ }
318
+ ```
319
+
250
320
<!-- tabs: end -->
251
321
252
322
<!-- solution: end -->
Original file line number Diff line number Diff line change
1
+ class Solution {
2
+ fun sortArray (nums : IntArray ): IntArray {
3
+ fun quickSort (left : Int , right : Int ) {
4
+ if (left >= right) {
5
+ return
6
+ }
7
+ var i = left - 1
8
+ var j = right + 1
9
+ val pivot = nums[left]
10
+ while (i < j) {
11
+ while (nums[++ i] < pivot) ;
12
+ while (nums[-- j] > pivot) ;
13
+ if (i < j) {
14
+ val temp = nums[i]
15
+ nums[i] = nums[j]
16
+ nums[j] = temp
17
+ }
18
+ }
19
+ quickSort(left, j)
20
+ quickSort(j + 1 , right)
21
+ }
22
+ quickSort(0 , nums.size - 1 )
23
+ return nums
24
+ }
25
+ }
Original file line number Diff line number Diff line change
1
+ impl Solution {
2
+ pub fn sort_array ( mut nums : Vec < i32 > ) -> Vec < i32 > {
3
+ let n = nums. len ( ) ;
4
+ Self :: quick_sort ( & mut nums, 0 , n - 1 ) ;
5
+ return nums;
6
+ }
7
+
8
+ fn quick_sort ( nums : & mut Vec < i32 > , left : usize , right : usize ) {
9
+ if left >= right {
10
+ return ;
11
+ }
12
+ let mut i = left as i32 - 1 ;
13
+ let mut j = right as i32 + 1 ;
14
+ let pivot = nums[ left] ;
15
+ while i < j {
16
+ loop {
17
+ i += 1 ;
18
+ if nums[ i as usize ] >= pivot {
19
+ break ;
20
+ }
21
+ }
22
+ loop {
23
+ j -= 1 ;
24
+ if nums[ j as usize ] <= pivot {
25
+ break ;
26
+ }
27
+ }
28
+ if i < j {
29
+ nums. swap ( i as usize , j as usize ) ;
30
+ }
31
+ }
32
+ Self :: quick_sort ( nums, left, j as usize ) ;
33
+ Self :: quick_sort ( nums, j as usize + 1 , right) ;
34
+ }
35
+ }
You can’t perform that action at this time.
0 commit comments