本文為大家分享了五個javascript算法,供大家參考,具體內容如下
1. 線性查找
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>線性查找</title>
</head>
<body>
<p>數(shù)組為:[2,4,6,23,53,545,65,3,24,5,3,6]</p>
<p>輸入要查的值:<input type="text" id="serch" onchange="search_index(this.value)"><p>
<p>這個值在數(shù)組的位置是:<span id="val"></span><p>
<script>
//1.聲明查找函數(shù)
//Arr為數(shù)組,x為要搜索的值
function search(Arr,x){
for(var i=0; i<Arr.length; i++){
if(Arr[i]==x){
return i; //返回x在數(shù)組中的位置;
}
}
return "不存在"; //循環(huán)結束還未發(fā)現(xiàn)的話 則返回"不存在";
}
//2.實例練習
var arr=[2,4,6,23,53,545,65,3,24,5,3,6]; //聲明一個數(shù)組
function $$(id){
return document.getElementById(id);
}
function search_index(value){
var val=getX(arr,value)
$$("val").innerHTML=val;
}
function getX(Arr,x){
var count=0;
console.log("循環(huán)執(zhí)行了:");
for(var i=0; i<Arr.length;i++){
count++
console.log(count);//輸出循環(huán)執(zhí)行的次數(shù)
if(Arr[i]==x){
return i;
}
}
return "該值不存在";
}
</script>
</body>
</html>
2.二分查找
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>二分查找溫故</title>
</head>
<body>
<script>
//二分查找值適用于已經(jīng)排好序的數(shù)組中
//二分就是逢中查找 步驟較少
var arr=[-13,2,4,6,8,12,34,35,45,56,57,88,110,234,239,342];//有序數(shù)組
function binarySearch(arr,x){
var low=0,high=arr.length-1;
var count=0;
while(low<=high){
count++;
console.log("這是第"+count+"次循環(huán)");
var mid=Math.floor((low+high)/2);
if(arr[mid]==x){
console.log("x所在數(shù)組內的引索是:"+mid);
return mid;
}
if(arr[mid]<x){//如果要查找的值大于二分值則low=mid+1;
low=mid+1;
console.log("此時low的值是:"+low);
}else{
high=mid-1;//如果要查找的值小于二分值則high=mid-1;
console.log("此時high的值是:"+high);
}
}
}
binarySearch(arr,45);
</script>
</body>
</html>
3.冒泡排序
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>javascript冒泡排序</title>
</head>
<body>
<script>
var arr=new Array(34,-3,43,67,12,44,21,34,5,645,64,3,43,23,25);
function bubbleSort(){
var temp;//聲明一個緩存變量
var count_outer=0;//外層循環(huán)計數(shù)
var count_inner=0;//內層循環(huán)計數(shù)
for(var i=0; i<arr.length;i++){//第一層循環(huán)
count_outer++;
console.log("這是外層循環(huán)的第"+count_outer+"次");
for(var j=arr.length;j>0;j--){//第二層循環(huán)
count_inner++;
console.log("...................這是內層循環(huán)的第"+count_inner+"次");
if(arr[j-1]<arr[j-2]){//判斷后面一值如果小于前面一值
temp=arr[j-2];//那么將前面的值存放在temp里面
arr[j-2]=arr[j-1];//然后將后面一直放在前面值的位置
arr[j-1]=temp;//在把temp里的值放在后面那個位置
}
console.log(".......................................外層第"+count_outer+"次循環(huán)"+"內層第"+count_inner+"次循環(huán)"+"后的數(shù)組排序結果是"+arr)
}
}
return "最終排序后的數(shù)組是:["+arr+"]....一共循環(huán)了"+count_inner+"次";
}
console.log(bubbleSort()); //控制臺輸出
</script>
</body>
</html>
4.階乘
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>階乘</title>
</head>
<body>
<script>
//created in 2014-04-30
//factorial function
function factorial(num){
if(num<=1){
return 1;
}else{
return num*arguments.callee(num-1);//arguments 是一個類似數(shù)組的對象 包含函數(shù)中傳入的參數(shù) 他有一個屬性callee,它是一個指針 指向擁有這個arguments對象的函數(shù)也就是factorial
}
}
var fac=factorial;//不帶括號的函數(shù)名是一個指向該函數(shù)的指針 所有fac現(xiàn)在也指向這個階乘函數(shù)
alert(fac(3));//6
</script>
</body>
</html>
5.輸出奇偶數(shù)控制
<html>
<head>
<title>只輸出奇數(shù)或者偶數(shù)項</title>
</head>
<body>
<script>
var ck = true;//全局變量
function oddOreven(num) { //num為0或1 控制輸出結果 是奇數(shù)還是偶數(shù)
for (var i = 0; i < 30; i++) {
if (ck) {
ck = false; //如果ck為true 讓其等于false
alert(i + num);
} else {
ck = true;
}
}
}
//調用
oddOreven(0); //偶數(shù)
oddOreven(1) //奇數(shù)
</script>
</body>
</html>
以上就是本文的全部內容,希望能夠幫助大家更好的學習javascript程序設計。