其他分享
首页 > 其他分享> > js冒泡、选择、插入排序

js冒泡、选择、插入排序

作者:互联网

1、冒泡排序: 冒泡排序是一个,无序区在前,有序区在后的算法如果从小到大排序,每轮比较,都要把当前无序区的最大值移动到有序区。

  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 temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
       }
 }

2、选择排序:有序区在前,无序区在后

 for(var i = 0 ; i < arr.length - 1; i++){
        //定义当前轮的最小值,为有序区第一个值
        var min = arr[i];
        //记录最小值下标
        var minIndex = i;
        for(var j = i + 1; j < arr.length  ; j++){
            if(min > arr[j]){
                min = arr[j];  // min保存最小值
                minIndex = j;  //minIndex保存最小值下标
            }
        }
        // 判断如果 minIndex != i 就交换位置
        if(minIndex != i){
            var temp = arr[i];
            arr[i]   = arr[minIndex];
            arr[minIndex] = temp;
        }
    }

3、插入排序:是一种最简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。

 for (var i = 1; i < arr.length; i++) {
        //定义变量保存要比较的数
        var now = arr[i];
        //保存当前的位置
        var j = i;
        // 循环次数不确定用while循环
        //升序   now < arr[j - 1]
        //降序   now > arr[j - 1]
        while (j && now < arr[j - 1]) {
            //如果now比左边一位小,就将左边向右移动一位
            arr[j] = arr[j - 1];
            j--;
        }
        //将now放入arr[j]的位置
        arr[j] = now; 
    }

标签:arr,插入排序,js,序列,length,冒泡,有序,var,排序
来源: https://www.cnblogs.com/liujianjun/p/16372142.html