关于javascript:几种简单排序的理解

冒泡排序

function bubbleSort(arr){
   for(var i = 0; i< arr.length; i++){
   for(var j = 0;j < arr.length - i; j++){
      if(arr[j] > arr[j+1]){
        temp = arr[j];
        arr[j] = arr[j+1];
        arr[j+1] = temp;       
   }     
 }
}
}

工夫复杂度:n^2
总结:冒泡排序,升序一组n个元素数组时,是通过相邻元素进行比照大小,若前大后小则进行替换,直至遍历这组数组所有元素n,遍历结束时,数组尾部元素便是最大元素。同理,顺次对n-i(i =1,…,n-1)的数组元素进行相邻比拟遍历,顺次失去每次遍历的最大元素,这些元素由将从小到大进行排序。

抉择排序

function selectionSort(arr){
    var temp, minIndex;
    for(var i = 0; i < arr.length - 1; i++){
       minIndex = i;
      for(var j = i+1; j < arr.length; j++){
        if(arr[j] < arr[minIndex]){
         minIndex = j;      
        }
  }
     temp = arr[i];
       arr[i]  =  arr[minIndex];
       arr[minIndex] = temp;
 }
    return arr
}

工夫复杂度: n^2
总结:数组升序,遍历数组并设为最小值时,进行遍历数组,将最小值与数组元素进行比照,选出最小的元素,顺次在数组中左往右进行排序。

插入排序

function insertionSort(arr){
    for(var i = 1; i < arr.length; i++){
    var preindex = i -1;
    var current = arr[i];
    while(current < arr[preindex] && preindex >= 0){
        arr[preindex + 1] = arr[preindex];  
        preindex--;
   }
    arr[preindex + 1] = current;
   }
  return arr
}

工夫复杂度:n^(1-2)
总结:数组升序,从第二个元素开始遍历数组,每次遍历顺次将元素与后面所有元素进行比照,若后面元素大以后遍历元素小,则将该元素向后赋值移一位,若后面元素小以后遍历元素大,则将以后遍历元素值赋给后面元素的后一位数组元素。

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理