关于Javascript算法排序的问题


一:这里就简单对冒泡排序、选择排序、插入排序的算法进行总结梳理
1.冒泡排序
冒泡排序相对来说是一种简单的排序算法,相对来说较好理解,重复比较,向后移。通俗的来说就是比较算法中相邻的2个元素,如果第一个呢比第二个大,第一个就往后移(第一个元素和第二个元素交换位置),依次进行比较,直到所有顺序都调换过来,最大的那个放在最后
1.1动图表示

1.2代码演示

    var arr = [223, 4, 5, 734, 2, 33, 23, 99];
          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]) {
             var temp = arr[j];
             arr[j] = arr[j + 1]; 
                   arr[j+1]=temp;                                                  }
              }
        }

 1.3结果展示

 2.选择排序

 简单直观的排序算法,在所有元素找到最大或者最小的,比如按从小到大流程排列就是找到最小的放在第一位或者末尾,然后再从剩下的元素里找到剩下元素中最小的放在之前那个元素后面,依次类推,直到排序完成。这么解释应该很通俗易懂了吧。
2.1代码演示

var arr = [223, 4, 22, 734, 2, 77, 23, 99];
for (var i = 0; i < arr.length - 1; i++) {    //假设0位是最小的
                var minIndex = i;    //从之后的元素中找最小的
                        for (var j = i + 1; j < arr.length; j++) {
                                        if(arr[j] < arr[minIndex]){
                   minIndex = j;
                        }
                }
                        var temp = arr[i];
                        arr[i] = arr[minIndex];
                        arr[minIndex] = temp;

      }

2.2结果

 3.插入排序

构建一个有序的序列,思想就是局部变化,在第一个元素之后取出一个元素,在之后进行插入比较如果比它大则放到下一个位置,重复操作,直到排序完成。

3.1动图展示

3.2 代码演示

var arr = [223, 4, 22, 734, 2, 77, 23, 99];
          for(var i=0;i<arr.length-1;i++){    //比较相邻元素,如果当前要插入的元素比之前的相邻元素小,交换
         for(var j=i+1;j>0;j--){
                if(arr[j]<arr[j-1]){
           var temp = arr[j];
                arr[j] = arr[j-1];
                       arr[j-1] = temp;
                           }
                    }
                  console.log('第'+(i+1)+'轮',arr);
               }
      console.log('排序后的数组',arr);

 这就是对三种排序的理解啦,如果有什么错误的地方,请大家积极发言,我会吸取经验,去改正,也希望大家有可用互相学习的地方打在评论区吧。

声明:Myily的个人博客|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - 关于Javascript算法排序的问题


欢迎