大张老师帮你快速理解程序经典算法:快速排序算法
Posted Oracle学习中心
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大张老师帮你快速理解程序经典算法:快速排序算法相关的知识,希望对你有一定的参考价值。
今天大张老师帮你快速理解快速排序算法,这也是在实际中最常用的一种排序算法,速度快,效率高。就像名字一样,快速排序是最优秀的一种排序算法。
一、设计思想
对一组无序的数组进行排序的时候,选其中一个数组元素(一般为中间元素)作为参照,把比它小的元素放到它的左边,比它大的元素放在右边形成2个子数组。再以此方法对2个子数组递归排序,直至最后完成整个数组的排序
例如有数组:{5, 4 ,9 ,7 ,6 ,2 ,1 ,3 , 8 , -1}
代码实现(C语言):
#include"stdio.h"
#include"stdlib.h"
inta[10]={5,4,9,7,6,2,1,3,8,-1};
voidquickSort(inti,intj){
intm,n,temp;
intk;
m=i;
n=j;
k=a[(i+j)/2];
while(m<=n){
//从左到右找比k大的元素
while(a[m]<k&&m<j)m++;
//从右到左找比k小的元素
while(a[n]>k&&n>i)n--;
//若找到且满足条件,则交换
if(m<=n){
temp=a[m];
a[m]=a[n];
a[n]=temp;
m++;
n--;
}
}
if(m<j)quickSort(m,j);
if(n>i)quickSort(i,n);
}
intmain()
{
/**
inta[6]={1,3,6,8,12,88};
intn=binarySearch(a,6,6);
printf("%d",n);
*/
quickSort(0,9);
for(inti=0;i<=9;i++){
printf("\t%d",a[i]);
}
//////////////////////////
return0;
}
往期精彩图文:
以上是关于大张老师帮你快速理解程序经典算法:快速排序算法的主要内容,如果未能解决你的问题,请参考以下文章