javascript中的冒泡排序和选择排序

**

1、选择排序(打擂台法)

**

​ 算法思想:在数组中先选择一个位置(第一个位置)我们把它叫做a[0],用这个位置的数与数组中的其他数进行一一比较比较,如果有数比a[0]大,就交换位置,把更大的数放入a[0],当遍历完数组一遍之后,a[0]就存储了数组中最大的数,同样的,再使用a[1]与数组后面的数比较,找出第二大的数放入a[1],通过一次次的比较,最终让数组从大到小排序。

//选择排序之升序:

​       function selectSortAsc(arr1){

​          for(var i=0;i<arr1.length-1;i++){

​            for(var j=i+1;j<arr1.length;j++){

​              if(arr1[i]>arr1[j]){

​                var tempt=arr1[i];

​                arr1[i]=arr1[j];

​                arr1[j]=tempt;

​              }

​            }

​          }

​          return arr1;

​        }

​        alert(selectSortAsc([10,20,3,4,1,45,34,90]));



​        //选择排序之降序:

​        function selectSortDesc(arr1){

​          for(var i=0;i<arr1.length-1;i++){

​            for(var j=i+1;j<arr1.length;j++){

​              if(arr1[i]<arr1[j]){

​                var tempt=arr1[i];

​                arr1[i]=arr1[j];

​                arr1[j]=tempt;

​              }

​            }

​          }

​          return arr1;

​        }

​        alert(selectSortDesc([10,20,3,4,1,45,34,90]));

**

2、冒泡排序:

**

​ 规则:前后两个数进行比较,如果符合交换条件,就交换位置,

​ 规律:冒泡排序每一轮都可以找出一个较大的数,放在正确的位置。

比较轮数=数组长度-1;
每一轮比比较的次数=数组长度-当前轮数;

​ 冒泡排序使用的是两个数之间比较,通过不断地交换位置,把最大或者是最小的数放到最后的位置,让后通过一样的方式把第二大的数放到倒数第二的位置,最终实实现从小到大或者从大到小的排序:
举例说明

把 9, 8, 7, 6, 5, 4从大到小排序:

​ 第一轮:五次

​ 9, 8, 7, 6, 5, 4

​ 8, 9, 7, 6, 5, 4

​ 8, 7, 9, 6, 5, 4

​ 8, 7, 6, 9, 5, 4

​ 8, 7, 6, 5, 9, 4

​ 8, 7, 6, 5, 4, 9

​ 第二轮:四次

​ 8, 7, 6, 5, 4

​ 7, 8, 6, 5, 4

​ 7, 6, 8, 5, 4

​ 7, 6, 5, 8, 4

​ 7, 6, 5, 4, 8

​ 第三轮:三次

​ 7, 6, 5, 4

​ 6, 7, 5, 4

​ 6, 5, 7, 4

​ 6, 5, 4, 7

​ 第四轮:两次

​ 6, 5, 4

​ 5, 6, 4

​ 5, 4, 6

​ 第五轮:一次

​ 5, 4

​ 4, 5

通过以上的例子,我们可以和很好的理解冒泡排序的思想,下面让我们来看看它的代码实现

var arr1 = [9, 8, 7, 6, 5, 4]; //从小到大



​    //冒泡排序的升序

​    function bubbleSortAsc(arr){

​      for (var i = 0; i < arr.length - 1; i++) {

​      //每一轮比较的次数

​        for (var j = 0; j < arr.length - (i + 1); j++) {

​          if (arr[j] > arr[j + 1]) {

​            //交换两个数位置

​            var tmp = arr[j];

​            arr[j] = arr[j + 1];

​            arr[j + 1] = tmp;

​          }

​        }

​       }

​       return arr;

​    }





​    //冒泡排序的降序

​    function bubbleSortDesc(arr){

​      for (var i = 0; i < arr.length - 1; i++) {

​      //每一轮比较的次数

​        for (var j = 0; j < arr.length - (i + 1); j++) {

​          if (arr[j] < arr[j + 1]) {

​            //交换两个数位置

​            var tmp = arr[j];

​            arr[j] = arr[j + 1];

​            arr[j + 1] = tmp;

​          }

​        }

​      }

​      return arr;

​    }

​    alert(bubbleSortAsc(arr1));

​    alert(bubbleSortDesc(arr1));
上一篇:网页三剑客之HTML


下一篇:Java学习实例——数组_判定一个数是否在数组中,若在则输出下标