冒泡排序和选择排序

玲珑骰子安红豆,入骨相思知不知

 

冒泡排序

 

思想

  1. 冒泡排序只会操作相邻的两个数据。
  2. 次冒泡操作都会对相邻的两个元素进行比较,看是否满足大小关系要求。如果不满足就让它俩互换。
  3. 一次冒泡会让至少一个元素移动到它应该在的位置,重复 n 次,就完成了 n 个数据的排序工作。

特点:

优点:排序算法的基础,简单实用易于理解。

缺点:比较次数多,效率较低。

代码:

var arr = [8,6,3,7,1]
        for(var i=0;i<=(arr.length-1)-1;i++){
            for(var j=0;j<=(arr.length-1)-1-i;j++){
                if(arr[j]>arr[j+1]){
                    var u=0;
                    u = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = u;
                }
            }
        }
        console.log(arr);

 

结果如下:

选择排序

思路

选择排序算法的实现思路有点类似插入排序,也分已排序区间和未排序区间。但是选择排序每次会从未排序区间中找到最小的元素,将其放到已排序区间的末尾。

步骤

  1.首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。

  2.再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。

  3.重复第二步,直到所有元素均排序完毕。

特点:

优点:进行(n-1)趟排序即可排序完成,时间复杂度为n的平方O(n*n)

缺点:比较次数比较多,每一趟从数据中选出的目标数据都是和剩下所有数据比较的结果。

例题代码:

 

var arr = [3,5,16,13,20]
        for(var i=0;i<=arr.length-1-1;i++){
            var min = i;
            for(j=i+1;j<arr.length;j++){
                if(arr[min]>arr[j]){
                    min = j;
                }
            }
            if(min!=i){
                var res = 0;
                res = arr[i];
                arr[i] = arr[min];
                arr[min] = res;
            }
        }
        console.log(arr);

 

结果如下:

 

 

 

逆战班

2020.03.22

 

 

 

 

 

 

posted @ 2020-03-22 19:38  卿幽  阅读(336)  评论(0编辑  收藏  举报