快速排序有三種寫法,平均複雜度幾乎相同。
我們這裡給出最常見的那種,把第乙個元素拎出來,然後找到它該去的地方再塞進去。
快速排序和氣泡排序都屬於交換排序,都屬於不穩定排序。
一趟快速排序定乙個位置,並且把區間分為兩部分。
int partition(int* arr,int i,int j) //小於基準值左移
//正向遍歷
while(i < j && arr[i] <= temp) i ++; //小於基準值繼續遍歷
if(i < j) //大於基準值右移
} arr[i] = temp; //基準值就位
return i; //返回基準位置,即排序區間劃分點
}
快速排序演算法:
void quicksort(int* arr,int left,int right)
}
**如下:
#includeusing namespace std;
int partition(int* arr,int i,int j) //小於基準值左移
//正向遍歷
while(i < j && arr[i] <= temp) i ++; //小於基準值繼續遍歷
if(i < j) //大於基準值右移
} arr[i] = temp; //基準值就位
return i; //返回基準位置,即排序區間劃分點
} void quicksort(int* arr,int left,int right)
}int main();
for(int i = 0;i < 10;i ++) cout執行結果:
考研資料結構 排序
人生哪有最好,把每乙個當下做到最好,就很不錯了呀。以下以考試主要考查的重點內容為主體,講述過程以方便大家記憶為上,並不面面俱到。首先得知道排序分內部排序和外部排序。內部排序 排序整個過程中資料在記憶體中。外部排序 排序整個過程中資料會有出現在內 外存之間調動的情況。考研主要考內部排序。內部排序主要分...
考研 資料結構 排序演算法
include include using namespace std 排序演算法 時間複雜度 最好,最壞,平均 插入排序 void insert sort int arr,int n arr j 1 temp 折半插入排序 void insert02 sort int arr,int n else...
資料結構 考研 拓撲排序
獲得乙個圖的拓撲排序可以有深搜和廣搜兩種途徑。深搜是逆向思維,遍歷到遞迴最深處,層層返回的時候把結點壓棧,得到的是乙個逆序拓撲序列。廣搜是正向思維,從度為 0 的結點入手,每次將度為 0 的結點入隊,直到全部遍歷。深搜 int visited 5 visited有三種狀態,未搜尋 0 搜尋中 1 搜...