快速排序是一種不穩定排序,它的時間複雜度為O(n·lgn),最壞情況為O(n2);空間複雜度為O(n·lgn)。
這種排序方式是對於冒泡排序的一種改進,它採用分治模式,將一趟排序的數據分割成獨立的兩部分,其中一組數據的每個值都小於另一組。每一趟在進行分類的同時實現排序。

其中每一趟的模式通過設置key當基準元素,key的選擇可以是數據的第一個,也可以是數據的最後一個。這裡以每次選取數據的第一個為例:

另外,關於C/C++編程學習,小編給大家提供一個學習.交.流群,歡迎到訪:569268376
具體代碼實現:
#include<stdio.h>
#define N 6
int fun(int arr[],int low,int high)
{
int key;
key=arr[low];
while(low<high)
{
while(low<high && arr[high]>=key)
high–;
if(low<high)
arr[low++]=arr[high];
while(low<high && arr[low]<=key)
low++;
if(low<high)
arr[high–]=arr[low];
}
arr[low]=key;
return low;
}
void quick_sort(int arr[],int start,int end)
{
int pos;
if(start<end)
{
pos=fun(arr,start,end);
quick_sort(arr,start,pos-1);
quick_sort(arr,pos+1,end);
}
}
int main()
{
int i;
int arr[N]={32,12,7,78,23,45};
for(i=0;i<N;i++)
{
printf(“%d “,arr[i]);
}
printf(“n”);
quick_sort(arr,0,N-1);
for(i=0;i<N;i++)
{
printf(“%d “,arr[i]);
}
return 0;
}

原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/273927.html
微信掃一掃
支付寶掃一掃