程序员50题(JS版本)(七)

程序31:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中
var test=[213,134,134,84,62,11];
const num=33;
test.push(num);
test.sort(function(a,b){
for(var i=0;i<test.length-2;i++){
if(test[i]>test[i+1]){
return b-a;
}else if(test[i]<test[i+1]){
return a-b;
}
}
});
console.log(test);
结果
[ 213, 134, 134, 84, 62, 33, 11 ]
程序32:将一个数组逆序输出
var test=[213,134,134,84,62,11];
var arr=[];
for(var i=test.length-1;i>=0;i--){
arr[test.length-1-i]=test[i];
}
console.log(arr);
结果
[ 11, 62, 84, 134, 134, 213 ]
程序33:打印出杨辉三角形(打出10行)
杨辉三角第n行第m个数为c(n-1,m-1)=(n-1)!/((n-m)!*(m-1)!)
var n=10;
for(var i=1;i<=n;i++){
for(var k=1,sum1='';k<=n-i;k++){
sum1+=' ';
}
for(var j=1,sum2='';j<=i;j++){
 
sum2+=fn(i-1)/(fn(i-j)*fn(j-1))+' ';
}
console.log(sum1+sum2);
}
function fn(x){
if(x==0){
return 1;
}else{
for(var k=1,res=1;k<=x;k++){
res*=k;
}
return res;
}
}
结果
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1
程序34:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组
var arr=[12345,-142,5326,63457,865,796];
var max=arr[0],min=arr[0];
for(var i=1;i<arr.length;i++){
if(arr[i]>max){
max=arr[i];
}
if(arr[i]<min){
min=arr[i];
}
}
arr[arr.indexOf(max,0)]=arr[0];
arr[0]=max;
arr[arr.indexOf(min,0)]=arr[arr.length-1];
arr[arr.length-1]=min;
console.log(arr);
结果
[ 63457, 796, 5326, 12345, 865, -142 ]
程序35:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数
var n=20,m=5;
var arr=[2131,14,14,532,4369,678,346,3650,990,8567,395,757,4579,68,1234,976,7421,563,54323,754];
console.log(arr);
for(var i=1;i<=n-m;i++){
arr.push(arr[0]);
arr.splice(0,1);
}
console.log(arr);
[2131,14,14,532,4369,678,346,3650,990,8567,395,757,4579,68,1234,976,7421,563,54323,754]
[976,7421,563,54323,754,2131,14,14,532,4369,678,346,3650,990,8567,395,757,4579,68,1234]
原文地址:https://www.cnblogs.com/xutao1517588477/p/10618998.html