javascript基本算法匯總
本文為大家分享了五個(gè)javascript算法,供大家參考,具體內(nèi)容如下
1. 線(xiàn)性查找
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>線(xiàn)性查找</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>這個(gè)值在數(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)結(jié)束還未發(fā)現(xiàn)的話(huà) 則返回"不存在";
}
//2.實(shí)例練習(xí)
var arr=[2,4,6,23,53,545,65,3,24,5,3,6]; //聲明一個(gè)數(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ù)組內(nèi)的引索是:"+mid);
return mid;
}
if(arr[mid]<x){//如果要查找的值大于二分值則low=mid+1;
low=mid+1;
console.log("此時(shí)low的值是:"+low);
}else{
high=mid-1;//如果要查找的值小于二分值則high=mid-1;
console.log("此時(shí)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;//聲明一個(gè)緩存變量
var count_outer=0;//外層循環(huán)計(jì)數(shù)
var count_inner=0;//內(nèi)層循環(huán)計(jì)數(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("...................這是內(nèi)層循環(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里的值放在后面那個(gè)位置
}
console.log(".......................................外層第"+count_outer+"次循環(huán)"+"內(nèi)層第"+count_inner+"次循環(huán)"+"后的數(shù)組排序結(jié)果是"+arr)
}
}
return "最終排序后的數(shù)組是:["+arr+"]....一共循環(huán)了"+count_inner+"次";
}
console.log(bubbleSort()); //控制臺(tái)輸出
</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 是一個(gè)類(lèi)似數(shù)組的對(duì)象 包含函數(shù)中傳入的參數(shù) 他有一個(gè)屬性callee,它是一個(gè)指針 指向擁有這個(gè)arguments對(duì)象的函數(shù)也就是factorial
}
}
var fac=factorial;//不帶括號(hào)的函數(shù)名是一個(gè)指向該函數(shù)的指針 所有fac現(xiàn)在也指向這個(gè)階乘函數(shù)
alert(fac(3));//6
</script>
</body>
</html>
5.輸出奇偶數(shù)控制
<html>
<head>
<title>只輸出奇數(shù)或者偶數(shù)項(xiàng)</title>
</head>
<body>
<script>
var ck = true;//全局變量
function oddOreven(num) { //num為0或1 控制輸出結(jié)果 是奇數(shù)還是偶數(shù)
for (var i = 0; i < 30; i++) {
if (ck) {
ck = false; //如果ck為true 讓其等于false
alert(i + num);
} else {
ck = true;
}
}
}
//調(diào)用
oddOreven(0); //偶數(shù)
oddOreven(1) //奇數(shù)
</script>
</body>
</html>
以上就是本文的全部?jī)?nèi)容,希望能夠幫助大家更好的學(xué)習(xí)javascript程序設(shè)計(jì)。
相關(guān)文章
使用JavaScript實(shí)現(xiàn)網(wǎng)頁(yè)版Pongo設(shè)計(jì)思路及源代碼分享
Pongo是款很好玩的手欠類(lèi)游戲,由于在玩的過(guò)程中發(fā)現(xiàn)了一些BUG,所以就打算自己也弄個(gè),經(jīng)過(guò)一番思索,就有了本文,主要說(shuō)說(shuō)實(shí)現(xiàn)這款游戲的設(shè)計(jì)思路以及分享源碼給大家2014-06-06
JavaScript中高階函數(shù)的巧妙運(yùn)用
JavaScript中的高階函數(shù)是指可以接受其他函數(shù)作為參數(shù)或者返回一個(gè)函數(shù)作為結(jié)果的函數(shù),本文介紹了JS中一些高階函數(shù)的妙用,希望對(duì)大家有所幫助2023-05-05
前端如何利用JS實(shí)現(xiàn)自定義表格滾動(dòng)效果實(shí)例
在數(shù)據(jù)可視化大屏中,滾動(dòng)表格是一種常見(jiàn)的需求,本文介紹了如何利用scrollTop屬性和定時(shí)器來(lái)制作滾動(dòng)效果,不依賴(lài)于任何插件,可以實(shí)現(xiàn)自定義的滾動(dòng)表格,文中通過(guò)代碼介紹是非常詳細(xì),需要的朋友可以參考下2024-09-09
JavaScript DOM 學(xué)習(xí)總結(jié)(五)
當(dāng)頁(yè)面加載時(shí),瀏覽器會(huì)創(chuàng)建頁(yè)面的文檔對(duì)象模型(Document Object Model)。文檔對(duì)象模型定義訪(fǎng)問(wèn)和處理HTML文檔的標(biāo)準(zhǔn)方法,本篇文章給大家介紹javascript dom 學(xué)習(xí)總結(jié)(五),感興趣的朋友一起學(xué)習(xí)吧2015-11-11
使用JS-SDK開(kāi)發(fā)公眾號(hào)微信網(wǎng)頁(yè)的完整步驟
微信JS-SDK是微信公眾平臺(tái) 面向網(wǎng)頁(yè)開(kāi)發(fā)者提供的基于微信內(nèi)的網(wǎng)頁(yè)開(kāi)發(fā)工具包,下面這篇文章主要介紹了使用JS-SDK開(kāi)發(fā)公眾號(hào)微信網(wǎng)頁(yè)的完整步驟,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2025-04-04
JavaScript給input的value賦值引發(fā)的關(guān)于基本類(lèi)型值和引用類(lèi)型值問(wèn)題
這篇文章主要介紹了JavaScript給input的value賦值引發(fā)的關(guān)于基本類(lèi)型值和引用類(lèi)型值問(wèn)題的相關(guān)資料,需要的朋友可以參考下2015-12-12
使用JavaScript 實(shí)現(xiàn)時(shí)間軸與動(dòng)畫(huà)效果的示例代碼(前端組件化)
這篇文章主要介紹了使用JavaScript 實(shí)現(xiàn)時(shí)間軸與動(dòng)畫(huà)效果的示例代碼(前端組件化),本文重點(diǎn)給大家介紹基礎(chǔ)的動(dòng)畫(huà)類(lèi)實(shí)現(xiàn)時(shí)間軸,通過(guò)示例代碼給大家介紹的很詳細(xì),需要的朋友可以參考下2021-04-04
JavaScript 嵌套函數(shù)指向this對(duì)象錯(cuò)誤的解決方法
JavaScript對(duì)于全局函數(shù)內(nèi)的this綁定為全局對(duì)象,而對(duì)于嵌套函數(shù)也采用了相同的解釋。2010-03-03

