好程序员web前端分享数组及排序、去重和随机点名,栈堆结构:堆栈都是一种数据项按序排列的数据结构,只能在一端(称为栈顶(top))对数据项进行插入和删除。

 

栈:存放的是路径;容量有限(在一开始被定义之后就不会改变了);先进后出(FILOfirst In

 Last Out

 

堆:路径映射的数据;容量无限(因为一直可能被改变);列队优先,先进先出(FIFOfirst In Last Out

 

如果我们把数组理解为栈堆结构的话,那么 

 

var arr =  [1,2,3,4,5,6 ];

 

那么arr就是 栈 他是一个路径 : 找到数据的存储层;

 

数据 [1,2,3,4,5,6] 就是堆 ; 

 

如果我们想要 改变堆中的数据的话,那么我们可以用push()方法向尾部添加一个数据,或者用pop()方法删除尾部数据。

数组:

for-in(结合数组或对象);

 

数组的概念,一组(一般情况下相同类型)的数据;

 

下标(索引)的概念;

 

创建数组

 

var arr= new Array(10); //创建一个包含 10 个元素的数组;

 

var arr2= new Array('杨怀智',100,'教师','辽宁');//使用构造函数创建;

 

var arr3 = [1,2,3,4,5];

 

静态赋值

 

arr[0] = 5;

 

arr[1] = 12;

 

arr[2] = 4;

 

动态赋值

 

for(var i=0; i<5; i++){

 

    arr[i] = Math.random();

 

}

数组对象自带的属性:length代表数组有多少数据项;

 

遍历访问数组  普通for循环和 forEach循环

 

arr.forEach(function(element,index,Arr){

 

})

 

push/pop、unshift/shift方法

 

arr.push('BJ'); //数组末尾添加一个元素

 

arr.unshift('TJ');  //数组开头添加一个元素

 

var str = arr.pop();   //移除末尾一个元素,并返回该元素

 

var str = arr.shift();   //移除开头一个元素,并返回该元素

 

 

队列结构:

 

练习:找出所有1-100之间7的倍数和包含7的数字

 

倒序reverse方法;

 

arr.reverse()方法不会创建新的数组,而是将原有数组顺序进行了改变;

 

var arr=[1,2,3]

 

arr.reverse();

 

console.log(arr)//3,2,1

 

从小到大排序sort方法  (数字的排序)

冒泡排序算法:

图片10.png

 

<!DOCTYPE html>

<html>

<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>

 

选择排序算法:

图片11.png

<!doctype html>

<html>

<head>

<meta charset="UTF-8">

<title>Document</title>

<script>

var arr = [3, 4, 1, 5, 2]

for (var i = 0; i < arr.length; i++) { //趟数

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>

<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>

 

随机点名程序:

<!DOCTYPE html>

<html>

<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>

随机点名

</body>

</html>