alogrithm(排序操作)

sort(first,last,comp) 排序

对一维数组
	int ar[5] = { 1,2,2,0,5 };
	sort(ar, ar + 5,Ifbigger);
	for (int i = 0; i < 5; i++)
		cout << ar[i] << "\t";//5 2 2 1 0
对二维数组
struct NUM
{
	int a;
	int b;
}M[8];

int arra_2[8][2] = {1,76,2,984,2,23,24,585,34,5,9,8,61,23,68 ,0};
	for (int i = 0; i < 8; i++)
	{
		M[i].a = arra_2[i][0];
		M[i].b = arra_2[i][1];
	}
	sort(M, M + 8, comp);

	for (int i = 0; i < 8; i++)
	{
		cout << M[i].a << "\t" << M[i].b << endl;
	}
	
result:
2       984
24      585
1       76
2       23
61      23
9       8
34      5
68      0
	

stable_sort(first,last, comp) 稳定排序:即排序后,等值元素的先后关系保持不变

partial_sort (first, middle ,last, comp) 部份排序 参与排序的是[ first,last) 有序的是[ first,middle)

	int ar[5] = { 1,2,2,0,5 };
	partial_sort(ar, ar + 3, ar + 5, Ifbigger);//5       2       2       0       1		7		9 
	//参与排序的是前5个, 最终有序的是排完序后的前3个,即参与排序中最大的三个

partial_sort_copy 拷贝部分排序的结果

	int ar[7] = { 1,2,2,0,5,7,9 };
	int ar_1[7];

	int *f = partial_sort_copy(ar, ar + 7, ar_1,ar_1+3,Ifbigger);//9  7  5
	for (int* i = ar_1; i < f; i++)
		cout << *i << "\t";

is_sorted C++11 检测指定范围是否已排序

int Ifsmall(int m, int n)
{
	if (m > 10 && n > 10)
		return 1;
	else
		return 0;
}

	int ar[7] = { 1,2,2,0,5,7,9 };
	cout << is_sorted(ar, ar + 7, Ifsmall);//1
	//原理就是判断是否全部使函数返回真
	

is_sorted_until (first,last,comp)C++11 返回一个迭代器,其指向第一个不按给定顺序排序的元素。

	int ar[7] = { 1,2,2,0,5,7,9 };

	partial_sort(ar, ar + 3, ar+7,Ifbigger);
	for (int i = 0; i < 7; i++)
		cout << ar[i] << "\t";// 9 7 5 0 1 1 2

	int *f = is_sorted_until(ar, ar + 7, Ifbigger);

	for (int * i = ar; i < f; i++)
		cout << *i << "\t";// 9 7 5 0
//虽然只排了3个,但是因为0恰好小于第三个数,也被判定为有序

nth_element(first,nth , last) 部份排序指定范围中的元素,使得范围按给定位置处的元素划分,
作用:nth_element作用为求第n大的元素,并把它放在第n位置上,下标是从0開始计数的,也就是说求第0小的元素就是最小的数。

//当有重复的数字的时候也加入排名之中
	int ar[7] = { 1,2,2,0,5,7,9 };
	int m = 2;
	nth_element(ar, ar + m, ar+7,Ifbigger);

	for (int i = 0; i < 7; i++)
		cout << ar[i] << "\t";//9       7       5       2       2       1       0

	cout << "第m+1大的数为:" << endl;
	cout << ar[m] << endl;//5

猜你喜欢

转载自blog.csdn.net/qq_36907160/article/details/85383995
今日推荐