首页 > 编程知识 正文

自定义函数c语言,c语言三个数大小排序

时间:2023-05-05 22:18:39 阅读:25140 作者:430

在此期间创建MFC程序时,必须对字符串集合CStringArray进行排序。 标准模板库STL提供的函数模板sort功能强大,但存在以下两个不便:

1、sort使用枚举器(iterator )机制处理c数组),即指针和vector这样的STL对象,但MFC集合类CArray、CStringArray不提供枚举器。 集合类的成员函数GetData可以将集合转换为指针,然后调用sort进行处理,但这会破坏对象的封装。

2、使用降序排序时,需要创建其他比较函数。

为此,我自己制作了排序用的函数模板。 在满足自己需求的同时,也顺便巩固了COC的基础。 虽然此函数模板功能很简单,但它支持c数组和MFC集合类,并支持升序和降序,这对于典型的APP应用程序来说是足够的。

函数代码如下: //此函数模板使用鼓泡法对集合元素进行排序,并说明参数。

//collection集合对象。 集合对象必须提供“”操作。

//element集合元素。 此参数的作用只是确定集合元素的类型。

//参数的值没有用,建议取集合中的第一个元素。 集合

//元素必须提供复制、赋值和比较操作。

//count集合元素数

//ascend表示排序中使用升序(true )还是降序(true )

//该函数模板支持c数组、MFC集合CStringArray和CArray。

模板

void bubble sort (collection _ type collection,ELEMENT_TYPE element,int count,bool ascend=true ) )

{

for(intI=0; I计数- 1; I )

for(intj=0; j count-1-i; j )

是if(ascend )

{

//升序

if(collection[j]collection[j1] )

{

ELEMENT_TYPE temp=collection[j];

collection[j]=collection[j 1];

collection[j 1]=temp;

}

}

else

{

//降序

if(collection[j]collection[j1] )

{

ELEMENT_TYPE temp=collection[j];

collection[j]=collection[j 1];

collection[j 1]=temp;

}

}

}以下代码按升序对整数数组进行排序。 intarrayint[]={45、23、76、91、37、201、187};

bubble sort (阵列int,阵列int [0],7 ); 以下代码按升序对整数集合进行排序。 CArray collectionInt;

collectionint.add(45;

collectionint.add(23;

collectionint.add(76;

collectionint.add(91;

collectionint.add(37;

collectionint.add(201;

collectionint.add(187;

bubblesort(collectionint,collectionInt[0],collectionInt.GetSize ); 以下代码按降序对字符串数组进行排序。 CString arrayString[]={“eagle”、“hawk”、“falcon”} ";

bubble sort (阵列字符串,阵列字符串[0],3,false );

以下代码按降序对字符串集合进行排序。 CStringArray collectionString;

collectionstring.add(「Eagle”)

collectionstring.add(「hawk”;

collectionstring.add(「Falcon”)

bubblesort(collectionstring,collectionString[0],collectionString.GetSize ),false );

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