快速排序相比氣泡排序,每次交換是跳躍式的。每次排序的時候設定乙個基準點,將小於等於基準點的數全部放到基準點的左邊,將大於等於基準點的數放到基準點的右邊。這樣每次交換的時候就不會像氣泡排序一樣只能在相鄰的數之間進行交換,交換的距離就大得多了。因此總的比較和交換次數就少了,速度自然就提高了。
當在最壞的情況下,仍可能是相鄰的兩個數進行交換,因此快速排序的最差時間複雜度和氣泡排序一樣,都是o(n²),它的平均時間複雜度為o(n㏒n)。
示例如下
;//初始化乙個陣列,其中有10個數,這裡假定是我們輸入的數,需要從小到大排序
public
static
void main(string
args)
///交換方法
///最左邊數的下標
///最右邊數的下標
private
static
void quicksort(int left, int
right)
}//最終將基準數歸位
a[left] =a[i];
a[i] =temp;
quicksort(left, i - 1);//
繼續處理左邊的,這裡是乙個遞迴的過程
quicksort(i + 1, right);//
繼續處理右邊的,這裡是乙個遞迴的過程
} }
}
溫故而知新
堆排 建立堆,維護堆的屬性 一次拿掉乙個,然後維護屬性,二分的結構 使得維護屬性只要logn的時間 冒泡也是一次拿走乙個 但是線性的結構 每次沒有節省時間 快排 一次確定 乙個值的位置,然後二分,縮小問題的範圍。floyd找最短 一次更新 將狀態改為經過固定點的 最短距離 迴圈 遍歷每個點,則結果為...
C 陣列 溫故而知新
using system using system.collections.generic using system.linq using system.text namespace 陣列 陣列初始化器只能在宣告陣列變數時使用,不能在宣告陣列之後使用 int iii new int 用花括號初始化陣...
C 溫故而知新,好吃
這一周,在業餘的時候,學習和 了c 中的知識點,一木不成林,一水難成海。1.net 是乙個開發平台,它幹著秦始皇的事,統一了程式設計類庫,提供了網路通訊標準可擴充套件標記語言的完全支援。方便你我他,大家使好它。microsoft.net 是microsoft xml web services平台。2...