網站首頁 編程語言 正文
前言
雨下不停,愛意難眠,說一下algorithm中的幾個排序算法吧,干什么總要排個序吧,有單純排序的算法題可以看一下,我寫的碼神說排序算法不多說了,來看吧,系好安全帶,發車了!
一、algorithm是什么?
如果說algorithm是個什么東西的話,百度百科是這樣說的,算法(algorithm),也如其名,這就是一個算法的頭文件,如果展開了來說的話,可能國慶假期都不夠我寫的,所以說本文我們主要來說algorithm中的排序算法
二、有哪些排序算法?
大致我想到的是以下的幾個排序算法,歡迎補充
- sort
- random_shuffle
- merge
- reverse
sort
根據使用的優先級來說的話,sort是在開發或者競賽中都比較常用的排序算法,在默認的情況下,他是從小到大的排序,先來看他的默認情況吧。
#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從大到小的排序算法有以下倆種
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隨機的,從名字我們可以猜出,這是一個打亂排好的序,從而實現隨機的算法,我也喜歡把它看成一個洗牌的過程,故曰:洗牌排序,看一下實現吧。
//洗牌排序,打亂隨機分配
#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.記得要給一個新數組分配內存
#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
反轉,正好用它再來輸出一次從大到小的排序
#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一個對象出來
原文鏈接:https://blog.csdn.net/weixin_45920495/article/details/120602858
相關推薦
- 2022-05-31 Python中的?if?語句及使用方法_python
- 2022-06-07 詳解ASP.NET?Core高性能服務器HTTP.SYS_實用技巧
- 2022-08-26 Python中True(真)和False(假)判斷詳解_python
- 2022-06-11 FreeRTOS進階之系統延時完全解析_操作系統
- 2022-07-07 Linux?shell進行文件解壓,復制和移動詳解_linux shell
- 2022-08-10 Qt實現簡易計時器的示例代碼_C 語言
- 2023-01-10 Go?Slice進行參數傳遞如何實現詳解_Golang
- 2021-12-16 Docker快速部署SpringBoot項目介紹_docker
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支