美文网首页
算法排序

算法排序

作者: 卡布哒Q | 来源:发表于2020-07-11 15:33 被阅读0次

    1、冒泡排序

    1.定义

    比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。

    2.代码实现

     for (var i = 0 ; i < arr.length ; 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;
          }        
     }
    }
    
    
    
    for (var i = 0 ; i < arr.length ;i ++) {
     for (var j = i+1 ; j < arr.length ; j ++) {
       if (arr[i] > arr[j]) {
         var temp = arr[i];
         arr[i] = arr[j];
         arr[j] = temp;
       }
     }
    }
    
    

    2、选择排序

    1.定义

    第一次从待排序的中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法

    2.代码实现

    for (var i = 0,k = 0 ; i < arr.length ; i++,k = i) {
     for (var j = i + 1 ; j < arr.length ; j ++) {
       if (arr[k] > arr[j]) {
         k = j;
       }
     }
     if (i != k) {
       var temp = arr[i];
       arr[i] = arr[k];
       arr[k] = temp;
     }
    }
    

    3、插入排序

    1.定义

    将一个记录插入到已经排好序的有序表中,从而一个新的、记录数增1的有序表。在其实现过程使用双层循环,外层循环对除了第一个元素之外的所有元素,内层循环对当前元素前面有序表进行待插入位置查找,并进行移动

    2.代码实现

    var curEle,preIndex;
    for (var i = 0 ; i < arr.length ; i ++) {
     preIndex = i - 1;
     curEle = arr[i];
     while (preIndex >= 0 && arr[preIndex] > curEle){
       arr[preIndex + 1] = arr[preIndex];
       preIndex--;
     }
     arr[preIndex + 1] = curEle;
    }
    

    相关文章

      网友评论

          本文标题:算法排序

          本文链接:https://www.haomeiwen.com/subject/zwricktx.html