每天一个小程序(7)——C++中sort函数的应用

            身为一个不算程序员的程序员,目前来说,最令我们头疼的应该就是那繁多的数据结构和算法问题,例如排序,数据存储等等。而STL为我们提供了一个方便的平台,它提供了大约100个实现算法的模板函数。我们熟悉了STL之后,许多代码都可以被简化,而且能提升运算的效率。我想在我们入职真正的程序员之后,STL将为我们提供很大的便利。

       而在之前我知道有STL中list,string,vector这几个简单的用法,昨天通过友人雷锋,知道了身处在<algorithm>这个头文件中的sort函数,顿时觉得我的懒惰终于有处使了,嘿嘿嘿。

言归正传,sort函数的定义如下:

#inlcude <algorithm>

using namespace std;


default (1):
template <class RandomAccessIterator>
 
v
oid sort (RandomAccessIterator first, RandomAccessIterator last);
custom (2):
template <class RandomAccessIterator, class Compare>
  void sort (RandomAccessIterator first, RandomAccessIterator last, Compare comp);


sort函数默认是升序排列,函数的用法是sort(a,a+n); 两个参数分别为需要排序数组的首地址和尾地址。

进一步的方法是可以自己写cmp函数,可以进行一些更复杂的结构体的排序。

例如 

int cmp(const Data &a,const Data &b)

{

if(a.data < b.data)//升序

return 1;

else

return 0;

}

#include <stdio.h>
#include <algorithm>
using namespace std;

int a[] = {12,3,35,8,-19,1999,100,9,0,23};

struct Data
{
	int data;
	int num;
}data[10];
//打印数组
void print1()
{
	for(int i = 0; i < 10; i++)
	{
		printf("%d ",a[i]);
	}
	printf("\n");
}
//数组排序
void sort1()
{
	sort(a,a+10);
}
//结构体数组赋值
void insert()
{
	for(int i = 0; i < 10; i++)
	{
		data[i].data = a[i];
	}
}
//打印结构体数组
void print2()
{
	for(int i = 0; i < 10; i++)
	{
		printf("%d ",data[i].data);
	}
	printf("\n");
}
//结构体数组排序函数
int cmp(const Data &a,const Data &b)
{
	if(a.data > b.data)//降序排列
		return 1;
	else 
		return 0;
}
//结构体数组排序
void sort2()
{
	sort(data,data+10,cmp);
	//sort(data,data+10);
}

void main()
{
	//结构体数组赋值
	insert();
	//数组排序
	printf("数组排序前:\n");
	print1();
	sort1();
	printf("数组排序后:\n");
	print1();
	//结构体数组排序
	printf("结构体数组排序前:\n");
	print2();
	sort2();
	printf("结构体数组排序后:\n");
	print2();
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值