1.面试题 排序算法总结
一:排序
1.冒泡 排序
原生:var arr=[5,4,3,2,1];
for (var i=0; i<arr.length-1; i++){
//第一次循环比较轮数
for (var j=0; j<arr.length-1-i;j++){
//第2次循环比较次数
if(arr[j]>arr[j+1]){
借助第3放变量进行交换
var temp =arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
调用api:
如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。
如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下:
- 若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
- 若 a 等于 b,则返回 0。
- 若 a 大于 b,则返回一个大于 0 的值。
function sortNumber(a, b)
{
return a - b
}
console.log('arr',arr);
console.log('arr.sort(sortNumber)',arr.sort(sortNumber));
二 :数组反转
原生:
arr =[1,2,3,4,5,6,7,8];
for (var i=0;i<arr.length/2;i++){
// arr[0] arr[arr.length-1-0]
// arr[1] arr[arr.length-1-1]
// arr[2] arr[arr.length-1-2]
// arr[3] arr[arr.length-1-3]
var temp = arr[i];
arr[i]= arr[arr.length-1-i];
arr[arr.length-1-i]=arr[i];
}
直接调用:arr.reverse()
三:数组中去重
原生:
思路:1.创建一个新数组,把原数组中得第一个元素插入到新数组中
2.遍历原数组中得每一个元素分别和新数组中得每一个元素进行比较
//原数组
var arr=[1,2,3,4,5,6,7,7,7,7,7,8,8,8];
//新数组
var arr2=[];
arr2[0]=arr[0];
for (var i=0;i<arr.length;i++){
for (var j=0;j<arr2.length;j++){
if(arr2[j]==arr[i]){
break;
}
if(j===arr2.length-1){
arr2.push(arr[i]);
}
}
}
四、在字符串中输出次数最多的字符,并返回次数
六、 breack和continue