1.簡單排序
let arr=[4,3,5,2,1,8,7,9,6];
arr.sort(function(a,b){
return a-b;
});
console.log(arr);
2.冒泡排序
思想:讓當(dāng)前項(xiàng)和后一項(xiàng)比較,如果當(dāng)前項(xiàng)大于后一項(xiàng)敌厘,兩者交換位置
function bubbleSort(arr){
for(let i=0;i<arr.length-1;i++){
for(let j=0;j<arr.length-1-i;j++){
if(arr[j]>arr[j+1]){
let temp=arr[j+1];
arr[j+1]=arr[j];
arr[j]=temp;
}
}
}return arr;
}
console.log(bubbleSort([4,3,5,2,1,8,7,9,6]));
3.快速排序
思想:在數(shù)組中間項(xiàng)作為“基準(zhǔn)點(diǎn)”台猴,比基準(zhǔn)點(diǎn)小的數(shù)值項(xiàng)放到左邊,大的放到右邊
function quickSort(arr){
if(arr.length<=1){
return arr;
}
let pointIndex=Math.floor(arr.length/2);//選定數(shù)組中間值為基準(zhǔn)點(diǎn)
let pointValue=arr.splice(pointIndex,1)[0];//獲取基準(zhǔn)點(diǎn)的值
//數(shù)組拆分
let left=[];
let right=[];
for(let i=0;i<arr.length;i++){
arr[i]<pointValue?left.push(arr[i]):right.push(arr[i]);
}
//遞歸拆分
return quickSort(left).concat([pointValue],quickSort(right));
}
console.log(quickSort([4,3,5,2,1,8,7,9,6]));
4.插入排序
思想:從左到右依次取數(shù)組中的項(xiàng)俱两,從后向前依次比較饱狂,選擇合適位置插入
function insertSort(arr){
let newArr=[];
newArr.push(arr[0]);//放入第一個(gè)值
for (let i = 1;i<arr.length;i++) {
for(let j=newArr.length-1;j>=0;){
if(arr[i]<newArr[j]){
j--;//從后向前依次比較
if(j===-1){
newArr.unshift(arr[i]);
}
}else{
newArr.splice(j+1,0,arr[i]);
j=-1;
}
}
}return newArr;
}
console.log(insertSort([4,3,5,2,1,8,7,9,6]));
5.數(shù)組去重
//方法一
var arr=[4,3,5,6,8,1,5,2,1,8,7,6,9];
var newArr=Array.from(new Set(arr));
console.log(newArr);
//方法二
function unique(arr) {
let result=[];
for(let i=0;i<arr.length;i++){
if(result.indexOf(arr[i])===-1){
result.push(arr[i]);
}
}return result;
}
console.log(unique([1,3,5,4,3,1,4]));
6.兩數(shù)交換
var a=2;
var b=3;
a=a+b;
b=a-b;
a=a-b;
console.log(a,b);
7.找出元素item在數(shù)組arr中的位置
function indexOf(arr,item){
if(Array.prototype.indexOf){
return arr.indexOf(item);
}else{
for(var i=0;i<arr.length;i++){
if(arr[i]===item){
return i;
}else{return -1;}
}
}
}
var arr=[1,2,3,4,5,6];
var item=3;
var n=indexOf(arr,item);
console.log(n);
8.計(jì)算給定數(shù)組arr中所有元素的總和
function sum(arr){
var sum=0;
arr.forEach(function(value){
sum+=value;
});return sum;
}
var arr=[1,2,3,4,5,6];
var n=sum(arr);
console.log(n);
9.移除數(shù)組arr中所有與item相等的元素,返回新的數(shù)組
function remove(arr,item){
var a=[];
for(var i=0;i<arr.length;i++){
if(arr[i]!==item)
a.push(arr[i]);
}return a;
}
var arr=[1,2,3,4,5,6];
var item=5;
var newArr=remove(arr,item);
console.log(newArr);
10.移除數(shù)組arr中所有與item相等的元素宪彩,并將結(jié)果返回
function remove(arr,item){
for(var i=0;i<arr.length;i++){
if(arr[i]===item){
arr.splice(i,1);
i--;
}
}return arr;
}
var arr=[1,2,3,4,5,6];
var item=5;
remove(arr,item);
console.log(arr);
11.實(shí)現(xiàn)一個(gè)打點(diǎn)計(jì)時(shí)器休讳,要求:
1.從start到end,每隔100毫秒consolo.log一個(gè)數(shù)字尿孔,每次增幅為1
2.返回的對象中需要包含一個(gè)cancal方法俊柔,用于停止定時(shí)操作
3.第一個(gè)數(shù)需要立即輸出
function count(start, end) {
console.log(start++);
var timer = setInterval(function(){
if(start <= end){
console.log(start++);
}else{
clearInterval(timer);
}s
},100);
return {
cancel : function(){
clearInterval(timer);
}
};
}
count(1,10);
12.實(shí)現(xiàn)fizzBuzz函數(shù),參數(shù)num與返回值的關(guān)系如下:
1.如果num能同時(shí)被3和5整除活合,返回字符串fizzbuzz
2.如果num能被3整除雏婶,返回字符串fizz
3.如果num能被5整除,返回字符串buzz
4.如果字符串為空或者不是Number類型白指,返回false
5.其余情況尚骄,返回參數(shù)num
function fizzBuzz(num) {
if(num%3===0&&num%5===0){
return "fizzbuzz";
}else if(num%3===0){
return "fizz";
}else if(num%5===0){
return "buzz";
}else if(num===null||typeof num!=="number"){
return false;
}else return num;
}
var str=fizzBuzz("hello");
console.log(str);
13.找出整型數(shù)組中乘積最大的三個(gè)數(shù)
var arr=[-1,-2,-3,-4,0,1,2,3];
arr.sort(function(a,b){
return a-b;
});
function findMax(arr){
var length=arr.length-1;
var max1=arr[0]*arr[1]*arr[length];
var max2=arr[length]*arr[length-1]*arr[length-2];
var Max;
max1>max2?Max=max1:Max=max2;
return Max;
}
console.log(findMax(arr));
14. 尋找連續(xù)數(shù)組中缺失的數(shù)字
var arr=[-1,-2,-3,-4,0,2,3];
arr.sort(function(a,b){
return a-b;
});
var min=arr[0];
var max=arr[arr.length-1];
function findLost(arr){
var sum1=0;
var sum2=0;
for(var i=0;i<arr.length;i++){
sum1+=arr[i];
}
sum2=((min+max)*(max-min+1))/2;
return sum2-sum1;
}
console.log(findLost(arr));
15.實(shí)現(xiàn)輸出斐波拉契數(shù)列
function Fibonacci(num){
if(num===0){
return 0;
}else if(num===1){
return 1;
}else{
return Fibonacci(num-2)+Fibonacci(num-1);
}
}
var n=10;//斐波拉契數(shù)列長度
for(var i=0;i<n;i++){
console.log(Fibonacci(i));
}
16.實(shí)現(xiàn)移除字符串空格函數(shù)Trim
function Trim(str){
var start=0;
var end=0;
//去除左邊空格
for(var i=0;i<str.length;i++){
if(str[i]!=" "){
start=i;
break;
}
}
//去除右邊空格
for(var j=str.length-1;j>0;j--){
if(str[j]!=" "){
end=j;
break;
}
}
//去除中間超過一個(gè)的空格
str=str.slice(start,end+1);
var result="";
for(var k=0;k<str.length;k++){
if(str[k]===str[k+1]&&str[k]===" "){
continue;
}else{
result=result.concat(str[k]);
}
}
return result;
}
var str= " a bc d ";
console.log(Trim(str));
17.二維數(shù)組中的查找
在一個(gè)二維數(shù)組中,每一行都按照從左到右遞增的順序排序侵续,每一列都按照從上到下遞增的順序排序。完成一個(gè)函數(shù)憨闰,輸入這樣的一個(gè)二維數(shù)組和一個(gè)整數(shù)状蜗,判斷數(shù)組中是否含有該整數(shù)。
function Find(target,array){
var hang=array.length;//行的長度
var lie=array[0].length;//列的長度
if(hang===0&&lie===0){
return false;
}
//選擇起點(diǎn)為二維數(shù)組左下角
var i=0;
var j=lie-1;
while(i<hang&&j>-1){
if(array[i][j]<target){
i++;
}else if(array[i][j]>target){
j--;
}else{
return true;
}
}
if(i>hang||j<0){
return false;
}
}
18.替換空格
實(shí)現(xiàn)一個(gè)函數(shù)鹉动,將一個(gè)字符串中的空格替換成“轧坎,”
function replaceSpace(str){
return str.split(" ").join(",");
}
var string=replaceSpace("I love you");
console.log(string);
19.跳臺階
一只青蛙一次可以跳上1級臺階,也可以跳上2級泽示;求該青蛙跳上一個(gè)n級的臺階總共有多少種跳法缸血。
function jumpFloor(n){
var a=1;
var b=2;
var c=0;
if(n===1){c=1};
if(n===2){c=2};
for(var i=3;i<=n;i++){
c=a+b;
a=b;
b=c;
}return c;
}
var sum=jumpFloor(10);
console.log(sum);
20.調(diào)整數(shù)組順序使奇數(shù)位于偶數(shù)前
輸入一個(gè)整數(shù)數(shù)組,實(shí)現(xiàn)一個(gè)函數(shù)來調(diào)整該數(shù)組中數(shù)字的順序械筛,使得所有的奇數(shù)位于數(shù)組的前半部分捎泻,所有的偶數(shù)位于位于數(shù)組的后半部分,并保證奇數(shù)和奇數(shù)埋哟,偶數(shù)和偶數(shù)之間的相對位置不變笆豁。
function reOrderArray(array){
var left=[];
var right=[];
var result=[];
for(var i = 0; i < array.length; i++){
if(array[i] % 2 == 0){
right.push(array[i]);
}else{
left.push(array[i]);
}
}
result=left.concat(right);
return result;
}
var newArr=reOrderArray([4,1,2,6,5,3,9,8,7]);
console.log(newArr);