前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >algorithm中的排序算法详解

algorithm中的排序算法详解

作者头像
秋名山码神
发布2022-12-13 14:19:14
2600
发布2022-12-13 14:19:14
举报
文章被收录于专栏:码神随笔

文章目录


前言

雨下不停,爱意难眠,说一下algorithm中的几个排序算法吧,干什么总要排个序吧,有单纯排序的算法题可以看一下,我写的码神说排序算法不多说了,来看吧,系好安全带,发车了!

一、algorithm是什么?

如果说algorithm是个什么东西的话,百度百科是这样说的,算法(algorithm),也如其名,这就是一个算法的头文件,如果展开了来说的话,可能国庆假期都不够我写的,所以说本文我们主要来说algorithm中的排序算法

二、有哪些排序算法?

大致我想到的是以下的几个排序算法,欢迎补充

  1. sort
  2. random_shuffle
  3. merge
  4. reverse

sort

根据使用的优先级来说的话,sort是在开发或者竞赛中都比较常用的排序算法,在默认的情况下,他是从小到大的排序,先来看他的默认情况吧。

代码语言:javascript
复制
#include<iostream>
#include<cstdio>
#include<vector>//用vector容器来存储
#include<algorithm>//算法头文件
using namespace std;
void myprint(int rel)
{
	cout << rel;
}
void test01()
{
	vector<int>v;
	for (int i = 0; i < 10; i++)
	{
		v.push_back(i);
	}
	//插入
	sort(v.begin(), v.end());
	//从小到大
	for_each(v.begin(), v.end(), myprint);
	//遍历输出
}
int main()
{
	test01();
	return 0;
}

实现sort从大到小的排序算法有以下俩种

代码语言:javascript
复制
sort(v.begin(), v.end(), greater<int>());
//用greater,其中greater表示内置类型从大到小排序,
//less表示内置类型从小到大排序。

//自定义函数来进行输出
bool getor(int v1, int v2)
{
	return v1 > v2;
}
sort(v.begin(), v.end(), getor);

random_shuffle

random随机的,从名字我们可以猜出,这是一个打乱排好的序,从而实现随机的算法,我也喜欢把它看成一个洗牌的过程,故曰:洗牌排序,看一下实现吧。

代码语言:javascript
复制
//洗牌排序,打乱随机分配
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<vector>
using namespace std;
void myprint(int val)
{
	cout << val << " ";
}
void test01()
{
	vector<int>v;
	for (int i = 0; i < 10; i++)
	{
		v.push_back(i);
	}
	random_shuffle(v.begin(), v.end());
	for_each(v.begin(), v.end(), myprint);
}
int main()
{
	test01();
	return 0;
}

merge

作用:俩个容器合并,并存储到另外一个容器中 条件: 1.俩个容器必须是有序的,所以可以用sort排序,排一下序 2.记得要给一个新数组分配内存

代码语言:javascript
复制
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<vector>
using namespace std;
void myprint(int val)
{
	cout << " " << val;
}
void test01()
{
	vector<int>v;
	vector<int>v1;
	for (int i = 0; i < 10; i++)
	{
		v.push_back(i);
		v1.push_back(i + 1);
	}
	vector<int>vTarget;
	//归并

	//要提前分配内存
	vTarget.resize(v.size() + v1.size());
	merge(v.begin(), v.end(), v1.begin(), v1.end(), vTarget.begin());
	for_each(vTarget.begin(), vTarget.end(), myprint);
}
int main()
{
	test01();
	return 0;
}

reverse

反转,正好用它再来输出一次从大到小的排序

代码语言:javascript
复制
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<vector>
using namespace std;
void myprint(int val)
{
	cout << " " << val;
}
void test01()
{
	vector<int>v;
	for (int i = 0; i < 10; i++)
	{
		v.push_back(i);

	}
	reverse(v.begin(), v.end());
	for_each(v.begin(), v.end(),myprint);
}
int main()
{
	test01();
	return 0;
}

总结

我能在algorithm中想到的排序函数就这些了,如果缺少哪些,欢迎补充,码神与你们一起变强,一起去new一个对象出来😂,哎哟,不错哦! 欢迎三连支持!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-10-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 前言
  • 一、algorithm是什么?
  • 二、有哪些排序算法?
    • sort
      • random_shuffle
        • merge
          • reverse
          • 总结
          相关产品与服务
          容器服务
          腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档