棧堆結(jié)構(gòu):
堆棧都是一種數(shù)據(jù)項(xiàng)按序排列的數(shù)據(jù)結(jié)構(gòu),只能在一端(稱為棧頂(top))對數(shù)據(jù)項(xiàng)進(jìn)行插入和刪除。
棧:存放的是路徑;容量有限(在一開始被定義之后就不會改變了);先進(jìn)后出(FILO)first In
Last Out
堆:路徑映射的數(shù)據(jù);容量無限(因?yàn)橐恢笨赡鼙桓淖儯?;列?duì)優(yōu)先,先進(jìn)先出(FIFO)first In Last Out
如果我們把數(shù)組理解為棧堆結(jié)構(gòu)的話,那么
var arr = [1,2,3,4,5,6 ];
那么arr就是 棧 他是一個路徑 : 找到數(shù)據(jù)的存儲層;
數(shù)據(jù) [1,2,3,4,5,6] 就是堆 ;
如果我們想要 改變堆中的數(shù)據(jù)的話,那么我們可以用push()方法向尾部添加一個數(shù)據(jù),或者用pop()方法刪除尾部數(shù)據(jù)。
數(shù)組:
for-in(結(jié)合數(shù)組或?qū)ο螅?/span>
數(shù)組的概念,一組(一般情況下相同類型)的數(shù)據(jù);
下標(biāo)(索引)的概念;
創(chuàng)建數(shù)組
var arr= new Array(10); //創(chuàng)建一個包含 10 個元素的數(shù)組;
var arr2= new Array('楊懷智',100,'教師','遼寧');//使用構(gòu)造函數(shù)創(chuàng)建;
var arr3 = [1,2,3,4,5];
靜態(tài)賦值
arr[0] = 5;
arr[1] = 12;
arr[2] = 4;
動態(tài)賦值
for(var i=0; i<5; i++){
arr[i] = Math.random();
}
數(shù)組對象自帶的屬性:length代表數(shù)組有多少數(shù)據(jù)項(xiàng);
遍歷訪問數(shù)組 普通for循環(huán)和 forEach循環(huán)
arr.forEach(function(element,index,Arr){
})
push/pop、unshift/shift方法
arr.push('BJ'); //數(shù)組末尾添加一個元素
arr.unshift('TJ'); //數(shù)組開頭添加一個元素
var str = arr.pop(); //移除末尾一個元素,并返回該元素
var str = arr.shift(); //移除開頭一個元素,并返回該元素
隊(duì)列結(jié)構(gòu):
練習(xí):找出所有1-100之間7的倍數(shù)和包含7的數(shù)字
倒序reverse方法;
arr.reverse()方法不會創(chuàng)建新的數(shù)組,而是將原有數(shù)組順序進(jìn)行了改變;
var arr=[1,2,3]
arr.reverse();
console.log(arr)//3,2,1
從小到大排序sort方法 (數(shù)字的排序)
冒泡排序算法:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script>
var arr = [2, 333, 1, 4, 6, 5, 7, 8];
for (var i = 0; i < arr.length - 1; i++) {
for (var j = 0; j < arr.length - i; j++) {
var ls;
if (arr[j] > arr[j + 1]) {
ls = arr[j];
arr[j] = arr[j + 1]
arr[j + 1] = ls
}
}
}
console.log(arr)
</script>
</head>
<body>
</body>
</html>
選擇排序算法:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script>
var arr = [3, 4, 1, 5, 2]
for (var i = 0; i < arr.length; i++) { //趟數(shù)
var min = arr[i];
var index = i;
for (var j = i; j < arr.length; j++) {
if (min > arr[j]) {
min = arr[j];
index = j;
}
}
arr[index] = arr[i];
arr[i] = min;
}
document.write(arr);
</script>
</head>
<body>
</body>
</html>
案例:去重
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<script>
var arr = [11, 2, 33, 4, 2, 11, 3, 44, 33, 2]
arr.sort();
var arr2 = [arr[0]]
for (var i = 0; i < arr.length; i++) {
if (arr[i] != arr2[arr2.length - 1]) {
arr2.push(arr[i]);
}
}
alert(arr2)
</script>
</head>
<body>
</body>
</html>
隨機(jī)點(diǎn)名程序:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<script>
document.onclick = function() {
var aName = ['楊懷智1', '楊懷智3', '楊懷智4']
var rad = Math.round(Math.random() * 2);
document.write(aName[rad])
}
</script>
</head>
<body>
隨機(jī)點(diǎn)名
</body>
</html>