排序演算法__快速排序
排序演算法__快速排序
一、介紹
快速排序是對氣泡排序的一種改進。快速排序由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;
}
三、複雜度分析
快速排序的時間複雜度在最壞情況下是,平均的時間複雜度是
相關文章
- 排序演算法:快速排序排序演算法
- 排序演算法-快速排序排序演算法
- 排序演算法 - 快速排序排序演算法
- 排序演算法——快速排序排序演算法
- 排序演算法之 '快速排序'排序演算法
- #排序演算法#【4】快速排序排序演算法
- 《排序演算法》——快速排序(Java)排序演算法Java
- 【JAVA演算法】排序演算法 -- 快速排序Java演算法排序
- 排序演算法 - 快速插入排序和希爾排序排序演算法
- 演算法之常見排序演算法-氣泡排序、歸併排序、快速排序演算法排序
- 【演算法】快速排序演算法排序
- 排序演算法-Java實現快速排序演算法排序演算法Java
- Python之排序演算法:快速排序與氣泡排序Python排序演算法
- 排序演算法之快速排序的實現排序演算法
- Sorting 排序演算法: Quick Sort 快速排序排序演算法UI
- 看動畫學演算法之:排序-快速排序動畫演算法排序
- 經典排序演算法 - 快速排序Quick sort排序演算法UI
- 三種快速排序演算法以及快速排序的優化排序演算法優化
- 演算法系列(四)排序演算法中篇--歸併排序和快速排序演算法排序
- 畫江湖之演算法篇【排序演算法】快速排序演算法排序
- 畫江湖之演算法篇 [排序演算法] 快速排序演算法排序
- java:快速排序演算法與氣泡排序演算法Java排序演算法
- 演算法之旅:快速排序演算法排序
- 演算法之快速排序演算法排序
- 圖形化排序演算法比較:快速排序、插入排序、選擇排序、氣泡排序排序演算法
- 排序演算法之「快速排序(Quick Sort) _c++ 」排序演算法UIC++
- python排序演算法的實現-快速排序Python排序演算法
- 排序:氣泡排序&快速排序排序
- 排序之快速排序排序
- 【分治演算法】歸併排序,快速排序和漢諾塔演算法排序
- 演算法 | 快速排序詳解演算法排序
- 演算法導論-快速排序演算法排序
- Python 演算法 快速排序Python演算法排序
- c#-快速排序-演算法C#排序演算法
- python實現氣泡排序、插入排序以及快速排序演算法Python排序演算法
- 前端演算法:快速排序演算法前端演算法排序
- 快速排序&&歸併排序排序
- php插入排序,快速排序,歸併排序,堆排序PHP排序