如何用STL进行快速排序,可以对数组进行排序
3个回答
展开全部
非常简单:使用STL中的std::sort即可,是改进后的快排,不仅效率高,而且在快排分支恶化之后会自动选择其它排序策略。
先 #include<algorithm>
int array[] = {1,5,3,2,6,10};
//然后像这样把数组传进去即可
std::sort(array, array+6);
//排序array中第1~第6个元素,对于任何本身就支持比较大小的类型(如int、double),都不需要另外写比较函数,十分快捷。
楼上的qsort早就过时了,在C++中不推荐使用。
先 #include<algorithm>
int array[] = {1,5,3,2,6,10};
//然后像这样把数组传进去即可
std::sort(array, array+6);
//排序array中第1~第6个元素,对于任何本身就支持比较大小的类型(如int、double),都不需要另外写比较函数,十分快捷。
楼上的qsort早就过时了,在C++中不推荐使用。
展开全部
快排原函数
void qsort(void * array,int nelem,int width,int (* fcmp)(const void *,const void *));
参数分别为:数组名,数组元素个数,单个元素所属数据类型的长度(字节数),比较函数
如果是整型数组排序,比较函数可以这样写
int comp(const void * a,const void *b)
{
return *(int *)a-*(int * )b;
}
这个比较函数原方不动的写main函数前面即可,函数调用时这样写:
qsort(a,100,sizeof(int),comp);
就是给a[100]这个数组排序
void qsort(void * array,int nelem,int width,int (* fcmp)(const void *,const void *));
参数分别为:数组名,数组元素个数,单个元素所属数据类型的长度(字节数),比较函数
如果是整型数组排序,比较函数可以这样写
int comp(const void * a,const void *b)
{
return *(int *)a-*(int * )b;
}
这个比较函数原方不动的写main函数前面即可,函数调用时这样写:
qsort(a,100,sizeof(int),comp);
就是给a[100]这个数组排序
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
快速排序(Quicksort)是对冒泡排序的一种改进。由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询