冒号排序法
冒号排序法就是将按照数字的大小排列起来。可以从小到大,也可以从大到小。
比如,现在有一个数组[12, 1, 99, 10, 20];,现在想利用冒泡排序排列起来。
那么思路是,先遍历数组,得到每个数组的元素,假设第一个元素是最大的,然后比较他们后面的大小后面有比假设的元素大的,那么就将他们放在后面(下标+1)。
第一遍:[1,12,10,20,99]
第二遍:[1,10,12,20,99]
可以看出来这个数组还是比较简单地,比较两边就可以的出。那么如果是较为复杂的呢?
[5,65,69,9,93,96,10,52,8,59,]
function maohao(arr) {
for (var i = 0; i < arr.length - 1; i++) {
for (var j = 0; j < arr.length - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
num = arr[j + 1]
arr[j + 1] = arr[j]
arr[j] = num
}
}
}
console.log(arr);
}
var arr = [5, 65, 69, 9, 93, 96, 10, 52, 8, 59]
maohao(arr)
显示效果如下:
外层决定的是要比较多少遍我们用的循环,就让他都比较一下。
里层的循环是遍历数组 每一次交换的次数,因为每一遍便利之后就会多一个最后面的数字,所以最后的数字不用遍历,然后每次便利的元素就会减少一个,就是arr.length-1-i 。让每个元素与假设的元素进行比较然后进行互换位置。
可能代码比较难理解,但是你只要记住:
1.一共需要几遍, 用外层循环
2.每次要交换多少次,用里层内循环
3.交换两个变量的位置上。
快去试试吧!