c++有自带的sort排序函数,比自己写的冒泡算法快很多,可以拿来直接用
1、加上头文件#include <algorithm> ,using namespace std
2、函数使用方法:sort(首元素地址,尾元素地址的下一个地址,比较函数) //前两个参数必填,比较函数不填,默认递增
3、比较函数可以自己写,函数或者类都可以,也可以用标准库里自带的模板类:greater,less足够用
升序:sort(begin,end+1,greater<data_type>())
降序:sort(begin,end+1,less<data_type>())
int _tmain(int argc, _TCHAR* argv[])
{
int a[20]={2,4,1,23,5,76,0,43,24,65},i;
for(i=0;i<20;i++)
cout<<a[i]<<endl;
sort(a,a+20,greater<int>());
for(i=0;i<20;i++)
cout<<a[i]<<endl;
return 0;
}
STL中:vector、string、deque可以用sort来排序。用指针形式也可以,注意尾地址+1
int width = image.cols;
int height = image.rows;
int sz = width*height;
int *label3 = new int[sz];
for (int n = 0; n < sz; n++)
{
int i = n%width;
int j = n/width;
label3[n]=clusters[i][j];
}
sort(label3,label3+sz); //尾地址加1
blocks=0;
for(int i=1;i<sz;++i)
{
if(label3[i] != label3[blocks])
{
label3[++blocks] = label3[i];
}
}
blocks++; //排序后 blocks用于记录不重复元素的个数
if (label3) delete[] label3;