演算法排序:史上最全2
快速排序
遞迴比較,每一步都需要進行判斷,使得i<j
//快速排序
//分治法 + 挖坑排序
void QuickSort(int arr[],int start,int end)
{
int i = start;
int j = end;
//基準數
int temp = arr[start];
if (i < j)
{
while (i<j)
{
//從右向左找比基準數小的
while (i < j && arr[j] >= temp)
{
j--;
}
//填坑
if (i < j)
{
arr[i] = arr[j];
i++;
}
//從左向右 找比基準數大的數
while (i < j && arr[i] < temp)
{
i++;
}
//填坑
if (i < j)
{
arr[j] = arr[i];
j--;
}
}
}
//把基準數放到i位置
arr[i] = temp;
//對左半部進行快速排序
QuickSort(arr, start, i - 1);
//對右半部分進行快速排序
QuickSort(arr, i + 1,end);
}
void PrintMyArray(int arr[],int len)
{
for (int i = 0; i < len; i++)
{
printf("%d ",arr[i]);
}
printf("\n");
}
int main(void)
{
int myArr[] = { 4,2,8,0,7,1,3,9 };
int len = sizeof(myArr) / sizeof(int);
PrintMyArray(myArr,len);
QuickSort(myArr,0,len-1);
PrintMyArray(myArr, len);
system("pause");
return 0;
}
相關文章
- 史上最全排序演算法總結!建議收藏排序演算法
- Android——RxJava2史上最全講解AndroidRxJava
- 史上最全的Rxjava2講解(使用篇)RxJava
- 這可能是史上最全的Python演算法集!Python演算法
- 史上最全webview詳解WebView
- Android史上最全面試題Android面試題
- 史上最全的WebSettings說明Web
- 史上最全SQL優化方案SQL優化
- 史上最全的Websocket入門教程Web
- 史上最全SQL最佳化方案SQL
- .NET 6 史上最全攻略
- 史上最全單連結串列的增刪改查反轉等操作彙總以及5種排序演算法(C語言)排序演算法C語言
- 史上最全的CSS hack方式一覽CSS
- 史上最全的Vue開發規範Vue
- 史上最全 XMind Mac/win快捷鍵大全Mac
- 史上最全的微服務知識科普微服務
- 史上最全中文分詞工具整理中文分詞
- 史上最全 Jenkins Pipeline流水線詳解Jenkins
- 史上最簡單的排序演算法?看起來卻滿是bug排序演算法
- 常用排序演算法總結(2)排序演算法
- 史上最全 Python 物件導向程式設計Python物件程式設計
- 前端免費高清電子書(史上最全)前端
- 史上最全 Python 迭代器與生成器Python
- 史上最全面的React-react基礎React
- 驚!史上最全的select加鎖分析(Mysql)MySql
- 2019 CSS經典面試題(史上最全)CSS面試題
- 【資源】史上最全資料集彙總
- 史上最全IntelliJ Idea mac版快捷鍵大全IntelliJIdeaMac
- 【一起學習排序演算法】2 氣泡排序排序演算法
- 史上最全解讀 | 飛槳模型庫重大升級,主流演算法模型全覆蓋模型演算法
- 史上最全的 Python 3 型別轉換指南Python型別
- 史上最全的Java進階書籍推薦Java
- JavaScript陣列去重(12種方法,史上最全)JavaScript陣列
- 史上最全Oracle資料泵常用命令Oracle
- 史上最全 Redis 高可用解決方案總結Redis
- 史上最全面的Spring Boot Cache使用與整合Spring Boot
- 史上最全“大資料”學習資源集合大資料
- 簡單網路管理協議SNMP(史上最全)協議