sort函数(c++ sort函数)

http://www.itjxue.com  2023-01-25 13:32  来源:未知  点击次数: 

C++ sort函数

比较函数是为了区分两个参数是大于等于或者小于,分别以返回值大于0、等于0和小于0来判定。

因为排序的目的主要是让决定谁在前谁在后的问题,所以通常你只需要定义小于就行了。如果compare(a,b)是判定a b,那么根据基本的逻辑,compare(b,a)肯定是判定a b,如果既不大于也不小于,那肯定就是等于了。

所以C++的sort的第三个参数函数原型返回值实际上bool类型,只需要在内部确定a 排在b前面时返回true就行了。虽然你用的整型返回值,但也是一样的,0为false,非0为true。

显然,这里涉及到一个逻辑问题,compare(a,b)返回true时表示a排在b前面,为了逻辑准确sort函数内部还有一次验证compare(b,a)是否也为true,如果也为true则出现了逻辑错误了,因为不知道到底是a在前还是b在前。如果你在compare(a,b)内部用的是=返回true,那么在一个没有相等的Letter.big成员时还正常,如果有相等的Letter.big成员时,就出现了compare(a,b)和compare(b,a)都为true,这是错误的。

sort()函数中的第三个参数:比较函数

sort中的比较函数compare要声明为静态成员函数或全局函数,不能作为普通成员函数,否则会报错。

?因为:非静态成员函数是依赖于具体对象的,而std::sort这类函数是全局的,因此无法再sort中调用非静态成员函数。静态成员函数或者全局函数是不依赖于具体对象的,?可以独立访问,无须创建任何对象实例就可以访问。同时静态成员函数不可以调用类的非静态成员。

c语言运用sort 排序函数,需要的头文件是什么?

sort不属于C语言的标准函数,所以也没有相应的头文件,但是可以自定义。

sort?函数为将整型数组从小到大排序。

voidsort(int*a,intl)//a为数组地址,l为数组长度。

{

inti,j;

intv;

//排序主体

for(i=0;il-1;i++)

for(j=i+1;jl;j++)

{

if(a[i]a[j])//如前面的比后面的大,则交换。

{

v=a[i];

a[i]=a[j];

a[j]=v;

}

}}

扩展资料

c语言自有的qsort函数

#includestdio.h

#includestdlib.h

intcomp(constvoid*a,constvoid*b)//用来做比较的函数。

{

return*(int*)a-*(int*)b;

}

intmain()

{

inta[10]={2,4,1,5,5,3,7,4,1,5};//乱序的数组。

inti;

qsort(a,n,sizeof(int),comp);//调用qsort排序

for(i=0;i10;i++)//输出排序后的数组

{

printf("%d\t",array[i]);

}

return0;

}

sort排序是什么?

sort()是c++、java里对数组的元素进行排序的函数,该函数在c++中包含于algorithm库中。

sort() 方法用于对数组的元素进行排序。包含于头文件algorithm。

sort()说明:

如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如果有必要),以便进行比较。

如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下:

若 a 小于 b,在排序后的数组中 a 应该出现 在 b 之前,则返回一个小于 0 的值。

若 a 等于 b,则返回 0。 (此时不排序)

若 a 大于 b,则返回一个大于 0 的值。

c++中排序函数sort用的是什么方法排序

STL的sort函数在数据量大时采用快排,分段递归排序,一旦分段后的数据小于某个值,就改用插入排序。如果递归层次过深,还会改用堆排序。这样就结合了各类算法的所有优点。

关于c++的sort函数

cmp实际上是一个函数模板,sort在调用时,是一个通用的过程。你可以假想sort是一个小机器人,能够在一个仓库里将货架上的货物进行排序。你第一次要求机器人“按照大小排序”,于是机器人花了几分钟完成了大小排序,第二次你要求机器人“按照重量排序”,于是机器人再次回到仓库,对同样的货物进行排序,不同的是这次并不按照大小,而是按照重量进行排序。

在这个的例子里,cmp函数决定了排序的方法,也就是重量、大小还是长度等等不同维度的东西。因为你的例子sort数据都是整数,因此看不出来这个函数的威力,如果输入的数据是struct,每个数据由不同的属性,比如上面例子的尺寸大小、重量甚至颜色等等,那么cmp函数写法就很有意思了

(责任编辑:IT教学网)

更多

推荐杀毒防毒文章