快快快速排序

简单の的介绍QAQ啊

快速排序(英语:Quicksort),又称划分交换排序(partition-exchange sort),简称快排,一种排序算法,最早由东尼·霍尔(图领奖得主)提出。😃🚅🌜🐇🥇⭕️快速排序使用分治法策略来把一个序列分为两个序列。

分治法(快速排序)的主要步骤🐱

  1. 从数列中挑出一个元素,称为「基准」(pivot)。
  2. 重新排序数列,所有比基准值小的元素摆放在基准前面,所有比基准值大的元素摆在基准后面(相同的数可以到任何一边)。在这个分割结束之后,该基准就处于数列的中间位置。
  3. 递归地把小于基准值元素的子数列和大于基准值元素的子数列排序。

图解🤔

重点: 必须清楚第一趟排序之后的结果

上代码啊👑

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include<stdio.h>
int QuickSort(int n[],int left,int right){
int mid=(left+right)/2;
int temp,j,i,middle=n[mid];
i=left;
j=right;
while (j>=i){
while(middle>n[i]){
i++;
}
while(middle<n[j]){
j--;
}
if(i<=j){
temp=n[i];
n[i]=n[j];
n[j]=temp;
i++;
j--;
}
}
if(i<right){
QuickSort(n,i,right);
}
if(j>left){
QuickSort(n,left,j);
}
}
int main(){
int s,a[]={4,1,2,45,21,1,2,3,3,1,3,14,1,1,14,12,4};
int length=sizeof(a)/sizeof(a[0]);
QuickSort(a,0,length-1);
for(s=0;s<length;s++){
printf("%d ",a[s]);
}
return 0;
}

本文标题:快快快速排序

文章作者:IceFeng

发布时间:2019年03月13日 - 17:15:55

最后更新:2019年04月12日 - 14:30:28

原始链接:https://www.icefeng.cc/2019/three-sf/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

------ 本文结束 ------
0%