目录
一、循环结构
重复结构(迭代),根据条件重复执行部分代码
1.for循环
for(表达式1;表达式2;表达式3){
循环体语句
}
(1)在没有"{}"的时,循环的控制范围到期后的第一条语句
(2)三个表达式都可以省略,但是分号不能省略
for(;;){
循环体语句
}
(3)算法的时间复杂度:执行算法所需要的时间
(4)算法的空间复杂度:执行算法所需要的内存空间
2.break语句
终止循环(在循环体中若遇到该语句则终止循环,无论循环是否做完)
3.continue语句:结束本次循环
4.while循环:'当'循环
while(条件表达式){
循环体语句;
}
(1)"条件表达式"的运算结果必须是Boolean型
5.do-while循环
do{
循环体语句;
}while(条件表达式);
(1)'do'是关键字,必须和while结合使用,不能单独使用
(2)无论条件是否为true,循环体语句至少执行一次
6.循环嵌套:在一个循环内部再套一个或多个循环
var k=0;
for(var i=1;i<=10;i++){
for(var j=1;j<=10;j++){
k++;
}
}
示例1:计算1+2+3+...+100
var sum = 0;
var i;
for(i=1;i<=100;i++){
sum = sum + i;
}
console.log(sum)
示例2:计算100以内所有的偶数和、奇数和并输出
var sum1 = 0;
var sum2 = 0;
var i;
for(i=1;i<=100;i=i+2){
sum1 = sum1 + i;
}
for(i=2;i<=100;i=i+2){
sum2 = sum2 + i;
}
console.log(sum1)
console.log(sum2)
示例3:判断输入的一个整数是否是素数
素数(质数):只能被1和它本身整除的数
var n = parseInt(prompt('请输入一个数'));
for(var i=2;i<n;i++){
if(n%i == 0){
break;
}
}
if(i>=n){
alert(n+'是素数')
}else{
alert(n+'不是素数')
}
示例4:计算斐波拉契数列的前20项之和
1 1 2 3 5 8 ...
var f1 = 1,f2 = 1, sum = f1 + f2,fn
for(var i=1;i<=18;i++){
fn = f1 + f2
f1 = f2
f2 = fn
sum = sum + fn
}
console.log(sum)
示例5:输出100以内的所有素数
for (var n = 1; n <= 100; n++) {
for (var i = 2; i < n; i++) {
if (n % i == 0) {
break;
}
} if (i >= n) {
console.log(n)
}
}
二、数组
是内存中一块连续的存储单元
1.创建数组
(1)使用new Array(): var arr = new Array()
(2)使用字面量[]: var arr = []
2.访问数组元素
是通过元素在数组中的索引
数组名[索引]
索引的取值范围:0~数组的长度减1
3.数组的属性
length 用来记录数组的长度,使用方法是:
数组名.length
示例1:找出数组中的最大值
var num = [45, 78, 32, 11, 56, 99, 27]
var max = num[0]
for (let i = 0; i < num.length; i++) {
if (max < num[i]) {
max = num[i]
}
}
console.log('max=', max)
示例2:找出数组中大于等于10的元素,存放到新数组中
var s=[0,1,5,0,12,6,8,9,45,5,78]
var arr1 = []
var j = 0
for(var i=0;i<s.length;i++){
if(s[i]>10){
arr1[j] = s[i]
j++
}
}
console.log(arr1)
示例3:反转数组元素
引入新数组
var arr = ['red','green','blue','pink','purple'];
var newarr = []
var j = 0
for(var i=arr.length-1;i>=0;i--){
newarr[j] = arr[i]
}
console.log(newarr)
使用原数组
var arr = ['red', 'green', 'blue', 'pink', 'purple'];
var i = 0
var j = arr.length-1
while(i<j){
var temp = arr[i]
arr[i] = arr[j]
arr[j] = temp
i++
j--
}
console.log(arr)
示例4:删除数组中的0
创建新数组
var arr = [2, 0, 6, 1, 77, 0, 52, 0, 25, 7]
var newarr = []
for (var i = 0; i < arr.length; i++) {
if (arr[i] != 0) {
newarr[newarr.length] = arr[i]
}
}
console.log(newarr)
使用原数组
var arr = [2, 0, 6, 1, 77, 0, 52, 0, 25, 7]
for(var i=0;i<=arr.length;i++){
if(arr[i] == 0){
for(var j=i;j<arr.length;j++){
arr[j] = arr[j+1]
}
}
}
console.log(arr)
三、简单的排序算法
1.冒泡排序
数据两两进行比较,若存在大小关系就进行交换
2.选择排序
每趟都是从当前无序的序列中找到最小数并记录其下标(索引);然后将当前无序序列的第一个元素和最小数进行交换