快速排序和冒泡排序的區別?


首先要明白什么是復雜程度?

  時間復雜度指的是一個算法執行所耗費的時間

  空間復雜度指運行完一個程序所需內存的大小

  穩定指,如果a=b,a在b的前面,排序后a仍然在b的前面

  不穩定指,如果a=b,a在b的前面,排序后可能會交換位置

1.快速排序(不穩定) 

  原理:首先從原始數組中找到最小的元素,並把該元素放在數組的最前面,然后再從剩下的元素中尋找最小的元素,放在之前最小元素的后面,知道排序完畢

  時間復雜度:

        最好情況是(n)

        最差情況是(n*n)

  function quickSort(arr){

    if (arr.length <= 1) return arr;

      var pivotIndex = Math.floor(arr.length/2);
      var pivot = arr.splice(pivotIndex,1)[0];
      var left = [];
      var right = [];
      for (let i = 0; i < arr.length; i++) {
        if (arr[i] < pivot) {
          left.push(arr[i])
        } else {
          right.push(arr[i])
        }
      }
      return quickSort(left).concat([pivot],quickSort(right))
    }

  }
  quickSort(arr)

2.冒泡排序 (穩定)

  原理:依次比較相鄰的兩個值,如果后面的比前面的小,則將小的元素排到前面。依照這個規則進行多次並且遞減的迭代,直到順序正確。(從大到小/從小到大是根據自己判斷的)

 

  時間復雜度:

 

        最好情況是(n*n)

 

        最差情況是(n*n)

 

  function sort(arr){

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

    return arr
  }
  sort(arr)

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM