JS之用一次for循环来合并排序

今天给大家分享一道较为简单的js题,下面大家先看一看题目,在这之前先不要看我写的代码,看看自己有没有更好的方法。下面我先把题分享出来:
一次for循环合并排序题
首先先把题中重点的地方列举出来:

  1. 数组的内容都是从小到大排好序的数字
  2. 合并之后的数字也是要从小到大排好序的;
  3. 不要直接使用sort()方法(在下面的代码中我没有使用sort()方法);
  4. 只使用一次for循环。

大家先仔细想一想思路,当你写完自己的代码时,认为自己代码是否有bug的最好方法就是带几组比较有代表性的值进去,然后验证它们的正确性来修复自己的bug。

接下来我将附上我所解析之后写的代码:

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
// 注意:题干要求a数组和b数组是从小到大的数字
var a = [1,2,5,9,112];
var b = [3,4,6,8];
var c = [];
var len = a.length + b.length;
var index = 0;
for(var i = 0,j = 0;;){
if(a[i] < b[j]){
if(a[i] !== undefined){
c[index] = a[i];
i++;
}else{
c[index] = b[j];
j++;
}
}else{
if(b[j] !== undefined){
c[index] = b[j];
j++;
}else{
c[index] = a[i];
i++;
}
}
index++;
if(index == len){
break;
}
}
console.log(c) // [1, 2, 3, 4, 5, 6, 8, 9, 112]