排序演算法__快速排序
排序演算法__快速排序
一、介紹
快速排序是對氣泡排序的一種改進。快速排序由C. A. R. Hoare在1962年提出。它的基本思想是:通過一趟排序將要排序的資料分割成獨立的兩部分,其中一部分的所有資料都比另外一部分的所有資料都要小,然後再按此方法對這兩部分資料分別進行快速排序,整個排序過程可以遞迴進行,以此達到整個資料變成有序序列。快速排序是不穩定的排序演算法。
二、C++實現
#include<iostream>
using namespace std;
void quickSort(int a[],int l,int r)//對陣列a的區間[l,r]進行快速排序
{
if(l<r)//當l<r時才進行排序
{
int i=l,j=r,x=a[i];//x表示選中的中間元素
while(i<j)
{
while(j>i&&a[j]>x) j--;//從右向左尋找第一個小於等於x的數
if(j>i) a[i++]=a[j];//如果找到賦值給a[i]
while(i<j&&a[i]<x) i++;//從左向右尋找第一個大於等於x的數
if(i<j) a[j--]=a[i];//如果找到賦值給a[j]
}
a[i]=x;//退出迴圈後,中間元素x應當放在i位置出
quickSort(a,l,i-1);//對[l,i-1]進行快排
quickSort(a,i+1,r);//對[i+1,r]進行快排
}
}
int main()
{
int a[]={10,9,8,7,6,5,4,3,2,1};
int len=sizeof(a)/sizeof(a[0]);
printf("排序前:");
for(int i=0;i<len;i++)
printf("%d ",a[i]);
quickSort(a,0,len-1);
printf("\n排序後:");
for(int i=0;i<len;i++)
printf("%d ",a[i]);
return 0;
}
三、複雜度分析
快速排序的時間複雜度在最壞情況下是,平均的時間複雜度是
相關文章
- 排序演算法 - 快速排序排序演算法
- 排序演算法:快速排序排序演算法
- 排序演算法之 '快速排序'排序演算法
- 【JAVA演算法】排序演算法 -- 快速排序Java演算法排序
- 演算法之常見排序演算法-氣泡排序、歸併排序、快速排序演算法排序
- 排序演算法 - 快速插入排序和希爾排序排序演算法
- Sorting 排序演算法: Quick Sort 快速排序排序演算法UI
- 快速排序演算法排序演算法
- 【演算法】快速排序演算法排序
- 排序演算法-Java實現快速排序演算法排序演算法Java
- 排序演算法之快速排序的實現排序演算法
- 畫江湖之演算法篇【排序演算法】快速排序演算法排序
- 畫江湖之演算法篇 [排序演算法] 快速排序演算法排序
- 演算法之快速排序演算法排序
- 演算法之旅:快速排序演算法排序
- 看動畫學演算法之:排序-快速排序動畫演算法排序
- 排序演算法之「快速排序(Quick Sort) _c++ 」排序演算法UIC++
- 排序:氣泡排序&快速排序排序
- python實現氣泡排序、插入排序以及快速排序演算法Python排序演算法
- 排序之快速排序排序
- 演算法 | 快速排序詳解演算法排序
- 前端演算法:快速排序演算法前端演算法排序
- 快速排序&&歸併排序排序
- php插入排序,快速排序,歸併排序,堆排序PHP排序
- Python八大演算法的實現,插入排序、希爾排序、氣泡排序、快速排序、直接選擇排序、堆排序、歸併排序、基數排序。Python演算法排序
- 快速排序排序
- 演算法圖解之快速排序演算法圖解排序
- 從演算法開始[快速排序]演算法排序
- 快速排序演算法(Quick_Sort)排序演算法UI
- Python進階-演算法-快速排序Python演算法排序
- 演算法之快速排序(php版)演算法排序PHP
- 選擇排序和快速排序排序
- 四、歸併排序 && 快速排序排序
- 排序演算法-堆排序排序演算法
- 排序演算法__桶排序排序演算法
- 排序演算法__堆排序排序演算法
- 排序演算法 - 堆排序排序演算法
- 資料結構和演算法(Golang實現)(25)排序演算法-快速排序資料結構演算法Golang排序