快速排序
void quicksort(int x,int y) { int i=x,j=y; int k=a[x]; if(i>=j) return; while(i<j) { while(i<j&&a[j]>k) j--; if(i<j) { a[i]=a[j]; i++; } while(i<j&&a[i]<=k) i++; if(i<j) { a[j]=a[i]; j--; } } a[i]=k; quicksort(x,i-1); quicksort(i+1,y); }
以上就是快排模板,当然估计没几个人可以认真看下去。
想看以上算法具体原理可以戳这个链接<<
然后开始讲sort怎么用= =
需要头文件
#include<algorithm>
如果只有两个参数的用法是
sort(begin,end)
begin是数组开始的地址,end是结束的地址。
比如你要把a[1]到a[100]从小到大排序(sort默认是升序即从小到大排序)
则可以这样用
sort(a+1,a+100)
这个语句过后a数组里从1到100的数就是从小到大排列的了
如果你要从大到小排序或者各种奇葩的排序方式的话需要写一个比较函数
bool compare(int a,int b) { return a>b; }
(布尔函数的写法可以参考我的另一篇博客)
然后
sort(a+1,a+100,compare)
这个语句之后a里的数就是从大到小排列的了
用中文总结一下sort的用法就是
sort(数组开始的地址,数组结束的地址,排序规则)
>>小朋友快点这里试一下吧<<
话说我干嘛要掌握快排精髓,写出来也不一定有sort快还浪费时间。