STL常用排序算法介绍

标签: 排序算法 merge sort stl
488人阅读 评论(0) 收藏 举报
分类:

merge()
 以下是排序和通用算法:提供元素排序策略
 merge: 合并两个有序序列,存放到另一个序列。

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <vector>

using namespace std;

void printV(vector<int> &v)
{
	for (vector<int>::iterator it = v.begin(); it != v.end(); ++it) {
		cout << *it << ' ';
	}
	cout << endl;
}

void play_merge()
{
	vector<int> v1;
	v1.push_back(1);
	v1.push_back(3);
	v1.push_back(5);

	vector<int> v2;
	v2.push_back(2);
	v2.push_back(4);
	v2.push_back(6);

	vector<int> v3;
	v3.resize(v1.size() + v2.size());
	merge(v1.begin(), v1.end(), v2.begin(), v2.end(), v3.begin());
	printV(v3);
	// 1 2 3 4 5 6
}

int main()
{
	play_merge();

	return 0;
}

sort()
 sort: 以默认升序的方式重新排列指定范围内的元素。若要改排序规则,可以输入比较函数。
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <vector>
#include <string>

using namespace std;

class Student
{
public:
	Student(string name, int id) : name(name), id(id) {}
	friend bool CompareStudent(Student &s1, Student &s2);

	string name;
	int id;
};

bool CompareStudent(Student &s1, Student &s2)
{
	return s1.id < s2.id;
}

void play_sort()
{
	Student s1("lucifer", 1);
	Student s2("zhang", 2);
	Student s3("yao", 3);
	Student s4("qi", 4);
	vector<Student> v;
	v.push_back(s4);
	v.push_back(s2);
	v.push_back(s1);
	v.push_back(s3);

	for (vector<Student>::iterator it = v.begin(); it != v.end(); ++it) {
		cout << "name: " << it->name << " id: " << it->id << endl;
	}
	/*
	name: qi id: 4
	name: zhang id: 2
	name: lucifer id: 1
	name: yao id: 3
	*/

	sort(v.begin(), v.end(), CompareStudent);

	for (vector<Student>::iterator it = v.begin(); it != v.end(); ++it) {
		cout << "name: " << it->name << " id: " << it->id << endl;
	}
	/*
	name: lucifer id: 1
	name: zhang id: 2
	name: yao id: 3
	name: qi id: 4
	*/
}



int main()
{
	play_sort();

	return 0;
}

random_shuffle()
 random_shuffle: 对指定范围内的元素随机调整次序。
srand(time(0)); //设置随机种子
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <vector>
#include <string>
#include <ctime>

using namespace std;

void printIntVector(vector<int> &v)
{
	for (vector<int>::iterator it = v.begin(); it != v.end(); ++it) {
		cout << *it << ' ';
	}
	cout << endl;
}

void play_random_shuffle()
{
	vector<int> v;
	v.push_back(1);
	v.push_back(3);
	v.push_back(5);
	v.push_back(7);
	v.push_back(9);

	printIntVector(v);
	// 1 3 5 7 9

	srand(time(0));
	random_shuffle(v.begin(), v.end());

	printIntVector(v);
	// 1 5 9 3 7
}

int main()
{
	play_random_shuffle();

	return 0;
}

reverse()

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <vector>
#include <string>

using namespace std;

void printIntVector(vector<int> &v)
{
	for (vector<int>::iterator it = v.begin(); it != v.end(); ++it) {
		cout << *it << ' ';
	}
	cout << endl;
}

void play_reverse()
{
	vector<int> v;
	v.push_back(1);
	v.push_back(3);
	v.push_back(5);
	v.push_back(7);
	v.push_back(9);

	printIntVector(v);
	// 1 3 5 7 9

	reverse(v.begin(), v.end());

	printIntVector(v);
	// 9 7 5 3 1
}



int main()
{
	play_reverse();

	return 0;
}
查看评论

整理:STL sort排序算法详细介绍

一切复杂的排序操作,都可以通过STL方便实现 ! 0 前言: STL,为什么你必须掌握 对于程序员来说,数据结构是必修的一门课。从查找到排序,从链表到二叉树,几乎所有的算法和原理都...
  • bat67
  • bat67
  • 2016-07-27 16:21:42
  • 1237

STL 标准模板库 简单介绍

标准模板库STL什么是STL? STL,即:Standard Template Library,是C++的一部分。 STL是常用数据结构和算法的集合。 STL的目标是标准化组件,提高开发效率和程...
  • qq_36016407
  • qq_36016407
  • 2017-02-28 09:13:52
  • 248

STL---对STL中的各类常用函数的小总结

对STL的优先队列,map,set的小总结,望指正。
  • u013486360
  • u013486360
  • 2014-08-09 09:55:52
  • 1775

七种常用排序算法

七种常用排序算法 一、常见排序算法一览: 时间复杂度: 是一个函数,它定量描述了该算法的运行时间。 空间复杂度:一个算法在运行过程中临时占用存储空间大小的量度。 稳定性:保证排序前2个相...
  • woaini454186694
  • woaini454186694
  • 2016-06-20 17:39:51
  • 2849

一些C++ STL泛型算法整理

泛型算法本身不会执行容器的的操作,他们只会运行于迭代器上,执行迭代器的操作。所以算法永远不会改变底层容器的大小,但可能改变容器中元素的值,也可能在容器中移动元素,但永远不会直接添加和删除元素。但标准库...
  • yibo_ge
  • yibo_ge
  • 2016-04-04 22:04:27
  • 419

STL算法之排序

stl算法库中提供的排序算法
  • hihozoo
  • hihozoo
  • 2016-03-03 10:20:16
  • 795

四种基本排序算法原理解析

本篇文章重点描述了C++语言的四种排序算法,基本的思想如下:1.插入排序 说明:将第2个元素到最后一个元素分别插入到前面已经排好的序列中 初始值: 5,4,3,2,1 loop1: 4...
  • Tarior
  • Tarior
  • 2016-08-22 21:05:17
  • 944

STL sort排序算法详细介绍

C++之所以得到这么多人的喜欢,是因为它既具有面向对象的概念,又保持了C语言高效的特点。STL 排序算法同样需要保持高效。因此,对于不同的需求,STL提供的不同的函数,不同的函数,实现的算法又不尽相同...
  • ZCF1002797280
  • ZCF1002797280
  • 2012-08-18 09:48:05
  • 7611

STL的一些常用容器

set:内置平衡树。支持插入删除,动态求前驱后继,最大最小值,二分查找。...
  • u011542204
  • u011542204
  • 2015-09-16 22:01:30
  • 273

STL高频面试题

1.具体说明STL如何实现vectorvector的内部是使用动态数组的方式来实现的,如果动态数组的内部实现不够用,就要动态的重新分配内存。然后把原数组的内容拷贝过去。2.vector和list的区别...
  • u010126059
  • u010126059
  • 2016-02-21 14:50:36
  • 4721
    个人资料
    专栏达人 持之以恒
    等级:
    访问量: 46万+
    积分: 8524
    排名: 2913
    博客专栏