-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path912-排序数组.ts
101 lines (91 loc) · 2.64 KB
/
912-排序数组.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
//插入排序
// function sortArray(nums: number[]): number[] {
// if(nums.length <= 1) return nums
// for(let i = 0; i < nums.length-1; i++){
// let min = nums[i]
// let minIdx = i
// for(let j = i+1; j < nums.length; j++){
// if(nums[j] < min){
// min = nums[j]
// minIdx = j
// }
// }
// let temp = nums[i]
// nums[i] = min
// nums[minIdx] = temp
// }
// return nums
// };
//选择排序
// function sortArray(nums: number[]): number[] {
// if(nums.length <= 1) return nums
// for(let i = 1; i < nums.length; i++){
// let val = nums[i]
// let j = i-1
// for(; j >= 0; --j){
// if(nums[j] > val){
// nums[j+1] = nums[j]
// }else{
// break
// }
// }
// nums[j+1] = val
// }
// return nums
// };
//归并排序
// function sortArray(nums: number[]): number[] {
// let len = nums.length
// mergeSort(nums, 0, len-1)
// return nums
// };
// function mergeSort(nums: number[], left:number, right:number){
// if(left === right) return
// let mid = Math.floor(left + (right-left)/2)
// mergeSort(nums, left, mid)
// mergeSort(nums, mid+1, right)
// merge(nums, left, mid, right)
// }
// function merge(nums:number[], left:number, mid: number, right:number){
// let len = right - left + 1
// let temp = new Array(len)
// for(let i = 0; i < len; i++){
// temp[i] = nums[left + i]
// }
// let i = 0
// let j = mid-left+1
// for(let k = 0; k < len; k++){
// if(i === mid+1-left){
// nums[left + k] = temp[j]
// j++
// }else if(j === right+1-left){
// nums[left+k] = temp[i]
// i++
// }else if(temp[i] <= temp[j]){
// nums[left+k] = temp[i]
// i++
// }else{
// nums [left+k] = temp[j]
// j++
// }
// }
// }
//归并排序1
// function sortArray(numS: number[]): number[] {
// if(numS.length <= 1) return numS
// let middle = Math.floor(numS.length /2)
// let left = numS.slice(0, middle)
// let right = numS.slice(middle)
// return merge(sortArray(left), sortArray(right))
// }
// function merge(left: number[], right: number[]): any[]{
// let result = []
// while(left.length > 0 && right.length > 0){
// if(left[0] < right[0]){
// result.push(left.shift())
// }else{
// result.push(right.shift())
// }
// }
// return [...result, ...left, ...right]
// }