首页 > 编程知识 正文

c语言利用链表对字符串排序,sort()函数

时间:2023-05-04 17:08:30 阅读:114330 作者:1627

(一)为什么要使用c标准库的排序函数

Sort ) )函数是c的排序方法之一,通过学习这个方法,也解决了我学习c以来使用的气泡排序和选择排序导致的执行效率低的问题。 因为排序方法使用的是类似于快速排序的方法,所以时间复杂度为n*log2(n ),执行效率高!

(二) c标准库排序函数的用法

I ) Sort函数包含在头文件#includealgorithm中的c标准库中。 调用标准库的排序方法时,不需要知道它在内部是如何实现的,只要有希望的结果就可以了。

II ) Sort函数有三个参数。

)第一个是要排序的数组的起始地址。

)第二个是结束地址(最后一位要排序的地址) )。

)第三个参数是排序的方法,可以从大到小排序,也可以不写第三个参数。 在这种情况下,默认排序方法按从小到大的顺序排序。

Sort函数使用模板:

sort (开始、结束、排序方法) ) ) ) ) ) )。

为了对数组中的10个个数进行排序,具体为sort ) )函数进行组合说明。

例子sort函数没有第三个参数,实现从小到大

# include iostream # includealgorithmusingnamespacestd; int main () inta [ 10 ]={ 9,6,3,8,5,2,7,4,1,0 }; for(intI=0; i10; I ) couta[i]endl; sort(a,a 10 ); for(intI=0; i10; I ) couta[i]endl; 返回0; }

例2

在上面的例子中,会产生如何实现从大到小肿胀的问题。

如上所述,必须使用sort ) )函数的第三个参数创建文章。 请告诉我按从大到小的顺序对程序进行排序。

必须添加比较函数complare ()。 此函数的实现步骤如下

BOLcomplare(inta,int b ) { return ab; }

这就是教程序如何从大到小排序!

# include iostream # includealgorithmusingnamespacestd; BOLcomplare(inta,int b ) { return ab; (}int main ) ) inta [ 10 ]={ 9,6,3,8,5,2,7,4,1,0 }; for(intI=0; i10; I ) couta[i]endl; sort(a,a 10,complare ); //这里不需要将参数传递给complare函数。 //这是规则for(intI=0; i10; I ) couta[i]endl; 返回0; }

示例3 :

上例1、2的方法实现了从小到大的排序,但这样做有点麻烦。 c标准库的强大功能完全解决了这一难题,因为您还需要编写指导程序执行哪些排序的原则函数。

Sortt函数的第三个参数可以使用这样的语句将您采用的排序原则传达给程序

lss数据类型()//从小到大

greater数据类型()//从大到小

结合这个例子,这样的东西可以完成你想要的任何排序原则

# include iostream # includealgorithmusingnamespacestd; int main () inta [ 10 ]={ 9,6,3,8,5,2,7,4,1,0 }; for(intI=0; i10; I ) couta[i]endl; sort(a,a 10,lessint ) ); for(intI=0; i10; I ) couta[i]endl; 返回0; } # include iostream # includealgorithmusingnamespacestd; int main () inta [ 10 ]={ 9,6,3,8,5,2,7,4,1,0 }; for(intI=0; i10; I ) couta[i]endl; sort(a,a 10,greaterint ) ); for(intI=0; i10; I ) couta[i]endl; 返回0; }

例四:利用sort函数也可以实现字符排序。 排序方法相似,以下是步骤示例

# include iostream # includealgorithmusingnamespacestd; int main () { char a[11]='asdfghjklk '; for(intI=0; i10; I ) couta[i]endl; sort(a,a 10,greaterchar ) ); for(intI=0; i10; I ) couta[i]endl; 返回0; }

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。