【C++】常用排序算法

这篇具有很好参考价值的文章主要介绍了【C++】常用排序算法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

0.前言

【C++】常用排序算法,C++,c++,排序算法,开发语言

1.sort

【C++】常用排序算法,C++,c++,排序算法,开发语言
【C++】常用排序算法,C++,c++,排序算法,开发语言

#include <iostream>
using namespace std;


// 常用排序算法 sort
#include<vector>
#include<algorithm>

//利用仿函数 打印输出
class myPrint
{
public:
	void operator()(int val)
	{
		cout << val << " ";
	}
};

//利用普通函数 打印输出
void myPrint2(const int val) // const 可加可不加 因为形参不能改变实参
{
	cout << val << " ";
}

void test01()
{
	vector<int>v;
	v.push_back(10);
	v.push_back(50);
	v.push_back(30);
	v.push_back(20);
	v.push_back(60);
	v.push_back(10);

	//默认从小到大 升序 排序
	sort(v.begin(), v.end());

	//打印输出
	for_each(v.begin(), v.end(), myPrint());
	cout << endl;

	//利用内置函数 改变为降序
	sort(v.begin(), v.end(), greater<int>());

	//打印输出
	for_each(v.begin(), v.end(), myPrint2);
	cout << endl;
}

int main()
{
	test01();
	cout << "------------------------" << endl;
	//test02();
	//cout << "------------------------" << endl << endl;
	//test03();

	//**************************************
	system("pause");
	return 0;
} 

【C++】常用排序算法,C++,c++,排序算法,开发语言

2.random_shuffle

【C++】常用排序算法,C++,c++,排序算法,开发语言
【C++】常用排序算法,C++,c++,排序算法,开发语言

#include <iostream>
using namespace std;


// 常用排序算法 random_shuffle(洗牌算法,打乱顺序)
#include<vector>
#include<algorithm>
#include<ctime>

//利用普通函数打印输出
void myPrint(int val)
{
	cout << val << " ";
}

void test01()
{
	srand((unsigned int)time(NULL)); //随机种子 每次生成的乱序都不一样

	vector<int>v;
	for (int i = 0; i < 10; i++)
	{
		v.push_back(i);
	}

	//遍历打印
	for_each(v.begin(), v.end(), myPrint);
	cout << endl;

	// 利用洗牌 算法 打乱顺序
	random_shuffle(v.begin(), v.end());
	
	//遍历打印
	for_each(v.begin(), v.end(), myPrint);
	cout << endl;
}

int main()
{
	test01();
	cout << "------------------------" << endl;
	//test02();
	//cout << "------------------------" << endl << endl;
	//test03();

	//**************************************
	system("pause");
	return 0;
} 

【C++】常用排序算法,C++,c++,排序算法,开发语言

3.merge

【C++】常用排序算法,C++,c++,排序算法,开发语言

#include <iostream>
using namespace std;


// 常用排序算法 merge
#include<vector>
#include<algorithm>

void myPrint(int val)
{
	cout << val << " ";
}

void test01()
{
	vector<int>v1;
	vector<int>v2;

	for (int i = 0; i < 10; i++)
	{
		v1.push_back(i);
		v2.push_back(i + 1);
	}

	//目标容器
	vector<int>vTarget;
	//提前给目标容器分配空间
	vTarget.resize(v1.size() + v2.size());

	merge(v1.begin(), v1.end(), v2.begin(), v2.end(), vTarget.begin());

	for_each(vTarget.begin(), vTarget.end(), myPrint);
	cout << endl;
}

int main()
{
	test01();
	cout << "------------------------" << endl;
	//test02();
	//cout << "------------------------" << endl << endl;
	//test03();

	//**************************************
	system("pause");
	return 0;
} 

【C++】常用排序算法,C++,c++,排序算法,开发语言

4.reverse

【C++】常用排序算法,C++,c++,排序算法,开发语言
【C++】常用排序算法,C++,c++,排序算法,开发语言

#include <iostream>
using namespace std;


// 常用排序算法 reverse
//反转 首尾互换
#include<vector>
#include<algorithm>

void myPrint(int val)
{
	cout << val << " ";
}

void test01()
{
	vector<int>v;
	
	for (int i = 0; i < 10; i++)
	{
		v.push_back(i);
	}

	cout << "反转前:" << endl;
	for_each(v.begin(), v.end(), myPrint);
	cout << endl;

	reverse(v.begin(), v.end());
	cout << "反转后:" << endl;
	for_each(v.begin(), v.end(), myPrint);
	cout << endl;
}

int main()
{
	test01();
	cout << "------------------------" << endl;
	//test02();
	//cout << "------------------------" << endl << endl;
	//test03();

	//**************************************
	system("pause");
	return 0;
} 

【C++】常用排序算法,C++,c++,排序算法,开发语言文章来源地址https://www.toymoban.com/news/detail-708650.html

到了这里,关于【C++】常用排序算法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C语言常用排序方法

    排序作为最基本的算法,其应用广泛,变化多样,在不同情景下有不同应用。下面介绍几种应用比较多的排序原理。 冒泡排序是最简单的排序算法,思路简单,容易理解。 冒泡排序是一种简单的交换排序,它的基本思想是:两两比较相邻记录的,如果反序则交换,直

    2024年02月11日
    浏览(43)
  • 【数据结构与算法】常用排序算法对比

    常用排序算法对比 相关术语解释 : 稳定:如果 a 原本在 b 前面,而 a = b,排序之后 a 仍然在 b 的前面。 不稳定: 如果 a 原本在 b 前面,而 a = b,排序之后 a 可能出现在 b 的后面。 内排序:所有排序操作都在内存中完成。 外排序:由于数据太大,因此把数据放在磁盘中,而

    2024年02月15日
    浏览(48)
  • 几大常用的排序算法

    直接插入排序是一种简单的插入排序法,其基本思想是: 在待排序的元素中,假设 第一个元素已有序 ,现将后面的元素与第一个元素作比较,比第一个元素小插入到前面已经排好的序列中,使得前面的元素有序。按照此法对所有元素进行插入,直到整个序列有序为止 动图演

    2024年03月17日
    浏览(38)
  • 常用排序算法汇总

    内部排序 将所有数据加载到内部存储器中排序 外部排序 数据量过大,需要借助外部存储进行排序 时间复杂度 是用来描述算法运行时间的,那么该如何估计程序运行时间呢,通常会估算算法的操作单元数量来代表程序消耗的时间,也可以这样考虑,时间复杂度就是操作一个

    2024年02月13日
    浏览(30)
  • 常用的排序算法(二)

    归并排序的时间复杂度为O(nlogn),在使用递归程序时,其额外空间复杂度为O(nlogn) 归并排序使用了一种叫做分而治之(Divide and conquer)的策略,将原本很庞大的数组排序问题分割成更小的子问题,在每一个子问题得到解决后,再合并它们。下面我们以数组arr[8]={9,2,4,6,3,

    2024年01月25日
    浏览(26)
  • 常用排序算法

    目录 直接插入排序 希尔排序 ​编辑 选择排序 堆排序 冒泡排序 快速排序 hoare版 挖坑法 前后指针法 非递归 归并排序 非递归 计数排序 直接插入排序跟依次模扑克牌一样,将最后一张牌依次与前面的牌比较,最后将牌插入到指定位置 单趟排序: 将最后一个数依次与前面的数

    2024年02月08日
    浏览(34)
  • 常用排序算法的理解

    1.插入排序 插入排序的思想是将一个记录插入到已经排好序的有序表中,从而形成一个新的、记录数加1的有序表。在其实现过程使用双层循环,外层循环是进行插入的次数(也可以理解为比较的轮数),内层循环是当前记录查找插入有序表的位置,并进行移动(可以理解为每

    2024年02月07日
    浏览(36)
  • js 常用排序算法

    1、基本思想 一个数组arr=[9,5,8,4,7,3,2],冒泡就是从数组第一个值开始与依次与之后的值比较,如果是从小到大排序,那么9先和5比较,9大就换与5交换位置,再和8比较还大,再和8交换位置,继续。。。直到2还大,那么9放在了数组的最后,下一次比较的数组变为arr=[5,8,4,7,3,2,9

    2024年02月02日
    浏览(33)
  • 常用的排序算法

    GO实现 另一种实现 GO实现 GO实现 GO实现 GO实现 GO实现 有两种建堆方式:从顶向下O(n)(已知堆的大小),从底向上O(nlogn)(堆的大小动态调整) 参考博文:【堆/排序】堆排序的两种建堆方法 GO实现 相当于为每个数字安排一个桶 GO实现 一位一位的来处理数据,桶的数量固定为十个

    2024年02月13日
    浏览(28)
  • 软考——常用排序算法

    目录 1,直接插入排序 2,折半插入排序 3,希尔排序 4,冒泡排序 5,快速排序 6,简单选择排序 7,堆排序 8,归并排序  各种排序方法的特性 :   稳定性 : 若在待排序的一个序列中,Ri和Rj的关键码相同,即Ri=Rj,且在排序前Ri领先于Rj,那么当排序后,如果Ri和Rj的相对次序

    2024年02月06日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包