快速排序函数sort和qsort

sort()函数的头文件#include<algorithm>

      形式一:sort(begin, end);

      形式二:sort(begin, end, comp);

补充:对于comp函数可以用greater<Type>和less<Type>代替,头文件是functional,greater<Type>对应的是 > 操作符,可以实现降序排列, less<Type>对应的是 < 操作符,可以实现升序排列。

begin, end 是左开右闭的区间,即[begin, end);   对于形式一,默认的排序方式的是升序,而形式而的排序方式则由comp函数来决定,测试代码如下:

#include <iostream>
#include <algorithm>
using namespace std;

int comp(int a, int b)
{
	//return a > b; //降序排列
	return a < b;   //升序排列

	/*
	 *  如果返回值为true, 则a排在b的前面,
	 *  如果返回值为false,则a排在b的后面。
	 */
}
int main()
{
	int a[6] = {3,2,4,8,5,7};

	//cout<<"This is sort(begin,end)"<<endl;
	//sort(a, a+6);   //升序排列

	cout<<"This is sort(begin, end, comp)"<<endl;
	sort(a, a+6, comp);
	for(int i =0; i<6; i++)
		cout<<a[i]<<"   ";
	cout<<endl;
}


 

对于qsort函数,他是C语言里的函数,其函数原型为

        void qsort(void *base, size_t nmemb, size_t size, int (*comp)(const void *, const void *));

第一个参数为指向要排序的数组头部的指针,实参可以指向任何类型的数组。第二个参数是要排序的项目数量,即数组的前n个元素个数。第三个参数是数组中元素的大小,即类型大小,如sizeof(int),第四个参数是指向要确定排序顺序的函数的函数指针。测试代码如下:

#include <iostream>
#include <stdlib.h>
#include <stdio.h>
using namespace std;

int comp(const void *p1, const void *p2)
{
	const int *a = (const int *)p1;
	const int *b = (const int *)p2;

	//return *a > *b; //升序排列
	return *a < *b;   //降序排列
}

int main()
{
	int a[6] = {3, 5, 2, 8, 6, 7};

	qsort(a, 4, sizeof(int), comp);

	for(int i =0; i<6; i++)
		cout<<a[i]<<"   ";
	cout<<endl;
}


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值