排序算法:快速排序

之前咱们说过的桶排序和快速排序,都各有各的优缺点:桶排序是虽然时间短,但是它占据了大量的空间,数字稍微一大就不行了,冒泡排序是占不了那麽大的空间,但是时间利用非常的久,数字的个数一多,就会超时。

那么有没有一种排序算法是两者取优呢,答案是有的。那就是咱们这节要讲的快排(其中用到了二分的思想),让我们一起来看看吧

假设我们现在对“6 1 2 7 9 3 4 5 10 8”这10个数进行排序。(让我们用到一个基准数的思想,也不难,就是以他为标准对他后面的数进行比较),首先定义两个变量,然后分别从后往前找一个大于基准数的数和从前往后找一个小于基准数的数(一定要注意顺序,先从后往前找大于基准数的数,再从前往后找一个小于基准数的数),如果在这两个变量相等前找到了,那就交换他俩的位置,之后继续往后搜索,如果这两个变量相等了(也就是遍历到同一个数的位置了),那就交换基准数和同一个数这两个数的位置,分成两部分继续遍历(其中用到递归了),上代码吧,(一直这么说有点抽象,语文不太好,不会描述)。

#include  
int a[101],n;//定义全局变量,这两个变量需要在子函数中使用 
void quicksort(int left,int right) 
{ 
 int i,j,t,temp; 
 if(left>right) 
 return; 
 
 temp=a[left]; //temp中存的就是基准数 
 i=left; 
 j=right; 
 while(i!=j) 
 { 
 //顺序很重要,要先从右往左找 
 while(a[j]>=temp && i

加油!!!第一天学,还需要再巩固巩固!!!

你可能感兴趣的:(排序算法,算法,数据结构)