Skip to content

Commit e03fb9f

Browse files
完成排序题目
1 parent ceb361d commit e03fb9f

3 files changed

Lines changed: 111 additions & 0 deletions

File tree

‎code/sort/04.js‎

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
// 922. 按奇偶排序数组 II
2+
/**
3+
* @param {number[]} A
4+
* @return {number[]}
5+
*/
6+
var sortArrayByParityII = function(arr) {
7+
// 先对数组进行排序
8+
arr.sort((a,b)=>a-b)
9+
let res = [];
10+
let odd = 1 ; // 奇数下标
11+
let even = 0; // 偶数下标
12+
arr.forEach(item => {
13+
if(item%2==1){
14+
res[odd] = item;
15+
odd+=2;
16+
}else{
17+
res[even] = item;
18+
even+=2
19+
}
20+
});
21+
return res
22+
};
23+
24+
console.log(sortArrayByParityII([4,2,5,7]))

‎code/sort/05.js‎

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
// 215. 数组中的第K个最大元素
2+
/**
3+
* @param {number[]} nums
4+
* @param {number} k
5+
* @return {number}
6+
*/
7+
/* var findKthLargest = function(nums, k) {
8+
// 倒序排序
9+
nums.sort((a,b)=>b-a);
10+
return nums[k-1]
11+
}; */
12+
13+
// 使用冒泡排序提升性能 只需遍历len-k次就OK
14+
var findKthLargest = function(nums, k) {
15+
let len = nums.length;
16+
for(let i=len;i>len-k;i--){
17+
for (let j = 0; j < i; j++) {
18+
let tmp = nums[j];
19+
if (tmp > nums[j + 1]) {
20+
nums[j] = nums[j+1];
21+
nums[j + 1] = tmp
22+
}
23+
}
24+
}
25+
return nums[len-k]
26+
};
27+
28+
console.log(findKthLargest([3,2,3,1,2,4,5,5,6],4))
29+
30+
31+

‎code/sort/06.js‎

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
// 41. 缺失的第一个正数
2+
/**
3+
* @param {number[]} nums
4+
* @return {number}
5+
*/
6+
/* var firstMissingPositive = function (nums) {
7+
let index;
8+
let len = nums.length;
9+
nums.sort((a, b) => a - b);
10+
if (nums.length == 0) return 1 ; // case: nums=[] 返回 1
11+
if (nums[len - 1] <= 0) return 1; // case: nums=[-1,-2]或者nums=[-1] 返回 1
12+
for (let i = 0; i < len; i++) {
13+
if (nums[i] > 0) {
14+
index = i
15+
break;
16+
}
17+
}
18+
19+
for (let j = index; j < len; j++) {
20+
if (nums[index] >1) {
21+
return 1
22+
} else if (nums[j + 1] - nums[j] > 1) {
23+
return nums[j] + 1 // case: nums=[3,4,-1,1] 返回 2
24+
}
25+
}
26+
27+
return nums[len-1]+1 // case: nums=[1,2,0] 返回 3
28+
}; */
29+
30+
// 利用选择排序来优化性能
31+
var firstMissingPositive = function (nums) {
32+
let arr = nums.filter(item => item > 0)
33+
for (let i = 0; i < arr.length; i++) {
34+
let min = arr[i];
35+
for (let j = i + 1; j < arr.length; j++) {
36+
if (min > arr[j]) {
37+
let tmp = min;
38+
min = arr[j];
39+
arr[j] = tmp;
40+
}
41+
}
42+
arr[i] = min;
43+
if(i>0){
44+
if(arr[i]-arr[i-1]>1){
45+
return arr[i-1]+1
46+
}
47+
}else{
48+
if(min!==1){
49+
return 1
50+
}
51+
}
52+
}
53+
return arr.length?arr.pop()+1:1
54+
};
55+
56+
console.log(firstMissingPositive([7,8,9,11,12]), 111)

0 commit comments

Comments
 (0)