演算法排序:史上最全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
- 史上最全webview詳解WebView
- 這可能是史上最全的Python演算法集!Python演算法
- 史上最全SQL優化方案SQL優化
- 史上最全的Websocket入門教程Web
- 史上最全的WebSettings說明Web
- 史上最全SQL最佳化方案SQL
- Android史上最全面試題Android面試題
- 史上最全的CSShack方式一覽CSS
- 史上最全的MYSQL備份方法MySql
- 史上最全單連結串列的增刪改查反轉等操作彙總以及5種排序演算法(C語言)排序演算法C語言
- 史上最全的微服務知識科普微服務
- 史上最全的CSS hack方式一覽CSS
- 史上最全中文分詞工具整理中文分詞
- 史上最全的Vue開發規範Vue
- 史上最全 XMind Mac/win快捷鍵大全Mac
- 史上最全的IntelliJIdea快捷鍵IntelliJIdea
- 史上最全的Chrome使用技巧集錦Chrome
- 史上最全網站降權原因解析網站
- 史上最全的谷歌公司那些黑科技谷歌
- #排序演算法#【2】直接插入排序、希爾排序排序演算法
- 前端免費高清電子書(史上最全)前端
- 史上最全面的React-react基礎React
- 【資源】史上最全資料集彙總
- 史上前端面試最全知識點前端面試
- [轉]史上最全的CSS hack方式一覽CSS
- 史上最全的ASP.NET MVC路由配置ASP.NETMVC路由
- 史上最全的 Java 新手問題彙總Java
- 史上最簡單的排序演算法?看起來卻滿是bug排序演算法
- 常用排序演算法總結(2)排序演算法
- O(n^2)的排序演算法排序演算法
- 史上最全解讀 | 飛槳模型庫重大升級,主流演算法模型全覆蓋模型演算法
- 史上最全Oracle資料泵常用命令Oracle
- 史上最全遊戲策劃入門乾貨(二)遊戲
- 史上最全 Redis 高可用解決方案總結Redis
- 史上最全 Python 迭代器與生成器Python