三种简单排序方法
冒泡排序(以从小到大说明)
- 从第一个开始比较相邻两个元素比较大小,如果前面元素小于后面元素,交换位置.
- 经过一次循环最小的元素会排到最后面.
- 最小的元素在最后面了,后面的循环不必参与了
- 从后往前排
代码实现如下
var arr = [45, 12, 45, 78, 12, 88, 96, 11]//从大到小
for (var j = 1; j < arr.length; j++) {
//-j是因为进行循环后最后面元素就是最小值不必重新排长度减小
for (var i = 0; i < arr.length - j; i++) {
if (arr[i] < arr[i + 1]) {
var temp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = temp;
}
}
}
console.log(arr);
选择排序
- 它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。
- 从前往后排
代码实现如下
var arr = [45, 421, 5, 89, 4, 6, 457, 2, 33, 555, 78]
//以从小到大排序
for (var j = 0; j < arr.length; j++) {
var miniindex = j;//对miniindex进行初始化
for (var i = j+1 ; i < arr.length; i++) {
//j+1的原因是前面排过的元素不需要再拍了
if (arr[miniindex] > arr[i]) {
miniindex = i;//得到了最小数值的下标
}
}
var temp = arr[j];//注意别写错这里是和外层循环的交换
arr[j] = arr[miniindex];
arr[miniindex] = temp;
//把最小的元素排到了前面,这个位置不用排了
}
console.log(arr);
插入排序
- 插入排序的基本思想是:每步将一个待排序的记录,按其关键码值的大小插入前面已经排序的文件中适当位置上,直到全部插入完为止。
//插入排序
var arr = [45, 88, 98, 23, 45, 11, 14, 45, 12]
//从小到大排序
for (var i = 0; i < arr.length; i++) {
for (var j = i; j > 0 && arr[j] < arr[j - 1]; j--) {
//和前面的比大小,小的到前面去,从后往前比
var temp = arr[j];
arr[j] = arr[j - 1];
arr[j - 1] = temp;
}
}
console.log(arr);