首页 > 代码库 > 数组排序
数组排序
1、 冒泡排序,将数组从小到大排序,即从数组左边开始相邻两个元素比较大小和交换位置。
<script>
// 冒泡排序,从小到大。
var arr = [41, 21, 12, 52, 67, 32, 23];
var outer = 0, inner = 0;
for (var j = 0; j < arr.length - 1; j++) {
// 声明flag作用是判断数组内元素是否从小到大排列好,是就跳出当前循环。
var flag = true;
// i < arr.length -1变为i < arr.length - 1 - j,此处优化去除了一些重复操作。
for (var i = 0; i < arr.length - 1 - j; i++) {
if (arr[i] > arr[i + 1]) {
var temp = arr[i + 1];
arr[i + 1] = arr[i];
arr[i] = temp
flag = false;
}
inner++;//内层循环次数
}
if (flag) {
break;
}
outer++;//外层循环次数
}
console.log(arr);
console.log(inner);
console.log(outer);
</script>
2、 选择排序,将数组从小到大排序,即依次取出数组中最小值,然后依次放入新的数组中并将它们从原数组中去除掉。
<script>
// 选择排序,从小到大
var arr = [65,97,76,13,27,49,58 ];
var newArr = [];
for(var i=0;i<arr.length;i++) {
var min = arr[0];
var minIndex = 0;
for(var j=0;j<arr.length;j++) {
if(min > arr[j]) {
min = arr[j];
minIndex = j;
}
}
newArr[newArr.length] = min;
arr[minIndex] = 100;//相当于将arr中的最小值去除
}
console.log(newArr);
</script>
3、 插入排序
<script>
var arr = [5, 4, 6, 2, 1];
// 从第二个开始往后
for (var i = 1; i < arr.length; i++) {
var temp = arr[i];
// 从第i个往前 只要比你小 就让你往后移动 让第i个插到合适位置
for (var j = i - 1; j >= 0 && arr[j] > temp; j--) {
arr[j + 1] = arr[j];
// console.log("j现在是" + j);
// console.log("内循环" + arr[j + 1]);
// console.log("内循环" + arr);
}
arr[j + 1] = temp;
// console.log("j现在是" + j);
// console.log("外循环" + arr[j + 1]);
// console.log("外循环" + arr);
}
console.log(arr);
</script>
4、 运算符的优先级,优先级从高到底
a) () 优先级最高
b) 一元运算符 ++ -- !
c) 算数运算符 先* / % 后 + -
d) 关系运算符 > >= < <=
e) 相等运算符 == != === !==
f) 逻辑运算符 先&& 后||
5、 number类型的浮点数在算数计算时不准确,如var result = 0.1 + 0.2;的计算结果不是0.3,而是0.30000000000000004。不要判断浮点数是否相等,不过判断范围还是可以的。
数组排序