15. 冒泡排序
定义:冒泡排序就是讲数据从大到小或者从小到大排列的一种算法。
方法:通过循环语句来实现,具体实现方式为:逐个将数组中的值,依次和其后面的值进行比较,如果比较的结果满足一定的要求的话,则两者进行两两交换,直至循环结束完成排序。如:
冒泡排序,从小到大 [65,97,76,13,27,49,58]
var arr = [65,97,76,13,27,49,58,1,12,26];
var m ;
//方法一:
for(var i = arr.length-1; i > 0;i--){
for(var j = 0;j < i;j++){
if(arr[j] > arr[j+1]){
m = arr[j];
arr[j] = arr[j+1];
arr[j+1] = m;
}
}
}
console.log(arr);
//方法二:
for(var i = 0;i<arr.length-1;i++){
for(var j = 0;j<arr.length-1-i;j++){
if(arr[j] > arr[j+1]){
m = arr[j];
arr[j] = arr[j+1];
arr[j+1] = m;
}
}
}
console.log(arr);
16. 函数
16.1 什么是函数
函数其实就是一段代码,一段被调用的时候执行,并且可以重复使用的代码块。
作用:把可以重用的代码提取成函数,把不可重用的部分当成参数传入函数。
函数的定义:(共有两种定义函数方式,暂时先说明其中一种)
使用函数声明的方式定义函数:
function 函数名(参数){
函数体(需要执行的代码块);
返回值;
}
函数声明以后,函数本身不会自动执行,需要我们通过“函数名()”的方法来进行调用。
函数的优势:一次声明或是定义,可以被重复调用。
16.2 函数的组成
函数的三要素:函数名、参数、返回值。
函数名:函数名的命名一般是一个动词,代表函数的功能。
参数:参数不是必须的,函数可以无参数。
返回值:返回值是每个函数都会有的,但是如果函数没有明确返回值的话,默认返回值是undefined。
函数的执行过程:我们通过“函数名()”的方法调用函数,函数将会将我们给的实参值赋值给函数中对应的形参(如果函数有参数要求的话),然后逐条执行函数内的语句,将执行完成后的结果返回给我们。其中我们提供给函数的数据就是参数,而函数最后返回给我们的数据就是返回值。
16.3 形参和实参的关系
形参:
如:function getSum(a,b,c){}, 在函数定义的时候,使用的参数叫做形参,起占位置和在函数内使用的作用。
实参:
如:getSum(10,20),在函数真正的调用的时候,传入的数据叫实参。
两者的关系:在JS中实参和形参的个数是可以不一样的。
16.4 ruturn的用法
在函数当中,return一般是用于返回函数当中的数据,如果return后面跟着数据,则返回后面的数据;如果return后面没有数据的话,则返回undefined。并且程序运行完return语句后,会立即跳出当前函数,后面的代码不在执行。
如:
function getSum(a,b){
a = 100;
return a + b ; //将计算后的结果用关键字return返回出去
console.log("看我执行了没有。。。。"); // return语句后直接跳出函数,后面的代码不再执行。
}
var num = getSum(a,b);
16.5 函数的嵌套
函数的嵌套就是在一个函数中调用其他函数,而在这时语句执行的顺序严格按照从上而下逐条执行的原则执行。如:
function f1(){
console.log("这是函数f1");
}
function f2(){
console.log("这是函数f2");
f1();
console.log("这是函数f2");
}
f2();
显示结果为:
这是函数f2
这是函数f1
这是函数f2
函数f2()被调用时,先执行f2()中的第一条语句console.log("这是函数f2");,再执行第二句f1();,就是调用f1()函数,这时会跳转至f1()函数,执行f1()函数中的语句console.log("这是函数f1");,f1()函数执行完成后,重新回到刚才f2()函数,从调用f1()函数的下一条语句开始继续执行,直至f2()函数执行完成。