常见几种算法

1.冒泡排序

 通过比较和交换相邻的两个元素来对数组进行排序

function sort1(arr){

for(let i = 0; i < arr.length - 1; i++){

   for(let j = 0; j<arr.length - i; j++){

       if(arr[i]>arr[j+1]){

         let temp = arr[i]

         arr[i] = arr[j]

         arr[j] = temp

         }

     }

  }

return arr;

}

2.选择排序 

每次从未排序的数组选择最小的元素,放置到已排序的数组末尾,重复这个过程直到数组完成

function sort2(arr){
           const n=arr.length
           for(let i=0;i<n-1;i++){
               let minIndex=i
               for (let j=i+1;j<n;j++){
                   if(arr[j]<arr[minIndex]){
                       minIndex=j
                   }
               }
               if(minIndex!=i){
                   [arr[i],arr[minIndex]]=[arr[minIndex],arr[i]]
               }
            }
           return arr;
}

3.插入排序

将数组分为已排序和未排序两部分,初始时已排序部分只包含一个元素,每次从未排序部分选择一个元素插入到已排序部分的正确位置,直到所有元素都排序完成

 function sort3(arr){
          const n = arr.length
          for(let i = 1;i<n;i++){
              const key = arr[i]
              let j = i-1;
              while(j >=0&&arr[j]>key){
                  arr[j+1] = arr[i]
                  j--;
              }
              arr[j+1]=key
          }
          return arr;
      }

4.快速排序

选择一个基准元素,将数组分成两个部分,一部分元素均比基准元素小,另一部分元素均比基准元素大,递归对两部分进行排序

function sort4(arr,left,right){
         if(left>right){
             const pivotIndex = getpivotIndex(arr,left,right)
             sort4(arr,left,pivotIndex-1)
             sort4(arr,pivotIndex+1,right)
         }
         return arr
     }
     function getpivotIndex(arr,left,right){
         const pivot = arr[right]
         let i =left-1
         for(let j = left;j<right;j++){
             if(arr[j] <= pivot){
                 i++
                 [arr[i],arr[j]] = [arr[i],arr[j]]
             }
         }
         [arr[i+1],arr[right]] = [arr[right],arr[i+1]]
         return i + 1;     
     }

猜你喜欢

转载自blog.csdn.net/and_life/article/details/131068329