欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳細聊一聊algorithm中的排序算法

 更新時間:2022年06月17日 11:58:13   作者:秋名山碼民  
<algorithm>是C++標準程序庫中的一個頭文件,定義了C++?STL標準中的基礎(chǔ)性的算法(均為函數(shù)模板),下面這篇文章主要給大家介紹了關(guān)于algorithm中排序算法的相關(guān)資料,需要的朋友可以參考下

前言

雨下不停,愛意難眠,說一下algorithm中的幾個排序算法吧,干什么總要排個序吧,有單純排序的算法題可以看一下,我寫的碼神說排序算法不多說了,來看吧,系好安全帶,發(fā)車了!

一、algorithm是什么?

如果說algorithm是個什么東西的話,百度百科是這樣說的,算法(algorithm),也如其名,這就是一個算法的頭文件,如果展開了來說的話,可能國慶假期都不夠我寫的,所以說本文我們主要來說algorithm中的排序算法

二、有哪些排序算法?

大致我想到的是以下的幾個排序算法,歡迎補充

  • sort
  • random_shuffle
  • merge
  • reverse

sort

根據(jù)使用的優(yōu)先級來說的話,sort是在開發(fā)或者競賽中都比較常用的排序算法,在默認的情況下,他是從小到大的排序,先來看他的默認情況吧。

#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;
}

實現(xiàn)sort從大到小的排序算法有以下倆種

sort(v.begin(), v.end(), greater<int>());
//用greater,其中g(shù)reater表示內(nèi)置類型從大到小排序,
//less表示內(nèi)置類型從小到大排序。

//自定義函數(shù)來進行輸出
bool getor(int v1, int v2)
{
	return v1 > v2;
}
sort(v.begin(), v.end(), getor);

random_shuffle

random隨機的,從名字我們可以猜出,這是一個打亂排好的序,從而實現(xiàn)隨機的算法,我也喜歡把它看成一個洗牌的過程,故曰:洗牌排序,看一下實現(xiàn)吧。

//洗牌排序,打亂隨機分配
#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.記得要給一個新數(shù)組分配內(nèi)存

#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;
	//歸并

	//要提前分配內(nèi)存
	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

反轉(zhuǎn),正好用它再來輸出一次從大到小的排序

#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;
}

總結(jié)

我能在algorithm中想到的排序函數(shù)就這些了,如果缺少哪些,歡迎補充,碼神與你們一起變強,一起去new一個對象出來

到此這篇關(guān)于algorithm中排序算法的文章就介紹到這了,更多相關(guān)algorithm排序算法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++11 并發(fā)指南之std::mutex詳解

    C++11 并發(fā)指南之std::mutex詳解

    這篇文章主要介紹了C++11 并發(fā)指南之std::mutex詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-02-02
  • CFileDialog設置多選的問題解決

    CFileDialog設置多選的問題解決

    前幾天同事問我在CFileDialog中多選時按確定按鈕后DoModal函數(shù)的返回值是IDCANCEL的問題解決
    2013-02-02
  • 詳解C語言中的wait()函數(shù)和waitpid()函數(shù)

    詳解C語言中的wait()函數(shù)和waitpid()函數(shù)

    這篇文章主要介紹了C語言中的wait()函數(shù)和waitpid()函數(shù),注意其在中斷進程方面用法的不同,需要的朋友可以參考下
    2015-08-08
  • C++11 thread多線程編程創(chuàng)建方式

    C++11 thread多線程編程創(chuàng)建方式

    這篇文章主要介紹了C++11 thread多線程編程的相關(guān)知識,包括線程的創(chuàng)建方式結(jié)束方式及互斥鎖的實例代碼詳解,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-12-12
  • C/C++經(jīng)典楊輝三角問題解決方案

    C/C++經(jīng)典楊輝三角問題解決方案

    楊輝三角形,又稱帕斯卡三角形、賈憲三角形、海亞姆三角形,它的排列形如三角形。本文將為大家介紹通過C++/C語言實現(xiàn)打印楊輝三角形的示例代碼,需要的可以參考一下
    2023-02-02
  • C語言中多樣式的格式控制符的使用詳解

    C語言中多樣式的格式控制符的使用詳解

    C語言中的格式控制符類型繁多,雖然格式字符可能就那么幾個,但組合起來使得格式控制符變得多樣化,這對于C語言初學者來說無疑是一種痛苦,為此我將常見的格式控制符類型及意義總結(jié)一下,希望對大家有所幫助
    2023-03-03
  • C++詳細講解圖的遍歷

    C++詳細講解圖的遍歷

    圖的遍歷是指,從給定圖中任意指定的頂點(稱為初始點)出發(fā),按照某種搜索方法沿著圖的邊訪問圖中的所有頂點,使每個頂點僅被訪問一次,這個過程稱為圖的遍歷
    2022-05-05
  • C語言的三種條件判斷語句你都了解嗎

    C語言的三種條件判斷語句你都了解嗎

    這篇文章主要為大家詳細介紹了C語言的三種條件判斷語句,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • C語言實現(xiàn)學生成績管理系統(tǒng)課程設計

    C語言實現(xiàn)學生成績管理系統(tǒng)課程設計

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)學生成績管理系統(tǒng)課程設計,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • C++面向?qū)ο笾惡蛯ο竽切┠悴恢赖募毠?jié)原理詳解

    C++面向?qū)ο笾惡蛯ο竽切┠悴恢赖募毠?jié)原理詳解

    C++是面向?qū)ο缶幊痰?這也是C++與C語言的最大區(qū)別,下面這篇文章主要給大家介紹了關(guān)于C++面向?qū)ο笾惡蛯ο蟮募毠?jié)原理的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-05-05

最新評論