插入排序
1.原理:
将一个数插入一个已经排好序的数据中
(1)第一次循环时,从第2个数开始处理。我们将第1个数作为已经排好序的数据:当第2个数 > 第1个数时,将第2个数放在第1个数后面一个位置;否则,将第2个数放在第1个数前面。此时,前两个数形成了一个有序的数据。
(2)第二次循环时,我们处理第3个数。此时,前两个数形成了一个有序的数据:首先比较第3个数和第2个数,当第3个数 > 第2个数时,将第3个数放在第2个数后面一个位置并结束此次循环【优化点】;否则,再和第1个数比较。如果第3个数 > 第1个数,则将第3个数插入第1个数和第2个数中间;否则,第3个数 < 第1个数,则将第3个数放在第1个数前面。此时,前三个数形成了一个有序的数据。
(3)后续的数据同理处理,直至结束。
2. 代码实现:
1 function insertSort(arr) { 2 var len = arr.length; 3 for (var i = 1; i < len; i++) { 4 for (var j = i; j > 0; --j) { 5 if (arr[j - 1] > arr[j]) { 6 [arr[j - 1], arr[j]] = [arr[j], arr[j - 1]]; 7 } 8 } 9 } 10 return arr; 11 }
优化:
1 function insertSort(arr) { 2 for (var i = 1; i < arr.length; i++) { 3 if (arr[i - 1] < arr[i]) { 4 continue; 5 } 6 for (var j = i; j > 0; --j) { 7 if (arr[j - 1] > arr[j]) { 8 [arr[j - 1], arr[j]] = [arr[j], arr[j - 1]]; 9 } 10 } 11 } 12 return arr; 13 }

浙公网安备 33010602011771号