排序算法

Posted 赵大树

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了排序算法相关的知识,希望对你有一定的参考价值。

一 插入排序

直接插入排序

根据顺序将未排序数组中的元素一一插入已排序好的数组中

 

function insert(arr){
  var source = arr;
  var result = [];
  for(var i=0; i<source.length; i++){ //时间频度 n
    if(i==0){ //n
      result[0]=source[0] //1
    } else{
      for(var j=0; j<result.length; j++){ //n^2-1
        if(source[i]<result[j]){ //n^2
          result.splice(j, 0, source[i]); n^2
          break;
        } else {
          if(j==result.length-1) { n^2
            result[j+1]=source[i]; n^2
            break;
          }
        }
      }
    }
  }
  return result; }
时间复杂度: O(n^2)

 

二 选择排序

二元选择排序

将代排序数组中的最大和最小值选出来分别移到数组的两端

 

function min-max(arr){
  var minIndex, maxIndex;
  for(var k=0; k<arr.length; k++){
    if(k==0){
      if(arr[k]<=arr[k+1]){
        minIndex=k;
        maxIndex=k+1;
      }
    } else{
      if(k>=2){
        if(arr[k]<min){
          minIndex=k
        } else(arr[k]>max){
          maxIndex=k
        }
      }
    }
  }
  
  return {min:min, max:max}
}
function
select(arr){   var source=arr;
  var result=[];
  result.length=source.length;
  var length=source.length;
  for(var i=0; i<length/2; i++){
    var min=min-max(arr).min;
    var max=min-max(arr).max;
    result[i]=min;
    result[length-i-1]=max;
  }
   }

 

以上是关于排序算法的主要内容,如果未能解决你的问题,请参考以下文章

算法排序之堆排序

快速排序-递归实现

从搜索文档中查找最小片段的算法?

在第6731次释放指针后双重免费或损坏

TimSort算法分析

以下代码片段的算法复杂度