二十七 快速排序

2021-09-25 07:51:52 字數 1369 閱讀 2990

快速排序其實是逐次對每個基數進行排序,當達到乙個臨界值(也就是當元素個數達到一定數量時,簡單的插入排序速度會大於快排)的時候就用插入排序來進行,其實這也是乙個分治處理的過程,和歸併思想大同小異,由於歸併要進行多次遞迴,而快排基於基數每次進行線性時間的分組,所以理想情況下快排優於歸併。這裡就直接上**。。。

#include //當剩餘元素數較小時,簡單的插入排序速度快於快速排序

#define cutoff 3

//列印陣列

void printarray(int array, int size)

printf("\n");

}//交換連個值

void swap(int *i, int *j)

//插入排序

void insertionsort(int array, int size)

array[j] = temp; }}

//獲取中值,先把最左邊的值作為基準來比較為的是把最小值移到最左邊,

//然後把最大值移到最右邊,最後交換中值與最右邊的值,形成分割雛形

int median(int array, int left, int right)

if(array[left] > array[right])

if(array[center] > array[right])

//這麼做是為了少一步交換大於中值的步驟

swap(&array[center], &array[right - 1]);

//返回中值

return array[right - 1];

}//快速排序的組成部分

void quicksortcomponment(int array, int left, int right)

; while(array[--rightpos] > pivot){};

if(leftpos < rightpos)

else

}swap(&array[leftpos], &array[right - 1]);

quicksortcomponment(array, left, leftpos - 1);

quicksortcomponment(array, leftpos + 1, right);

} else }

//快速排序

void quicksort(int array, int size)

int main(void)

; int size = sizeof(array)/sizeof(array[0]);

quicksort(array, size);

printarray(array, size);

return 0;

}

隨筆(二十七)

1.安卓開發外掛程式推薦 2.必知必會 android 測試相關的方方面面都在這兒 3android ui效能優化 檢測應用中的ui卡頓 4.recyclerview的拖動和滑動 第一部分 基本的itemtouchhelper示例 支援側滑和排序 5 android觸控事件分發機制詳解 6.andr...

題解二十七

給你兩個有序整數陣列 nums1 和 nums2,請你將 nums2 合併到 nums1 中,使 nums1 成為乙個有序陣列。說明 初始化 nums1 和 nums2 的元素數量分別為 m 和 n 你可以假設 nums1 有足夠的空間 空間大小大於或等於 m n 來儲存 nums2 中的元素。示例...

一百二十七

頭疼編寫k8s部署檔案?k8s yaml 引數很多,需要邊寫邊查?保留回滾版本數怎麼設?如何探測啟動成功,如何探活?如何分配和限制資源?如何設定時區?否則列印日誌是gmt標準時間 如何暴露服務供其它服務呼叫?如何根據cpu和記憶體使用率來配置水平伸縮?首先,你需要知道有這些知識點,其次要把這些知識點...