最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳細(xì)聊一聊algorithm中的排序算法

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

前言

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

一、algorithm是什么?

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

二、有哪些排序算法?

大致我想到的是以下的幾個(gè)排序算法,歡迎補(bǔ)充

  • sort
  • random_shuffle
  • merge
  • reverse

sort

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

#include<iostream>
#include<cstdio>
#include<vector>//用vector容器來(lái)存儲(chǔ)
#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;
}

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

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

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

random_shuffle

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

//洗牌排序,打亂隨機(jī)分配
#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

作用:倆個(gè)容器合并,并存儲(chǔ)到另外一個(gè)容器中

條件:

1.倆個(gè)容器必須是有序的,所以可以用sort排序,排一下序

2.記得要給一個(gè)新數(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),正好用它再來(lái)輸出一次從大到小的排序

#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ù)就這些了,如果缺少哪些,歡迎補(bǔ)充,碼神與你們一起變強(qiáng),一起去new一個(gè)對(duì)象出來(lái)

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

相關(guān)文章

  • C++?STL標(biāo)準(zhǔn)庫(kù)之std::list使用介紹及用法詳解

    C++?STL標(biāo)準(zhǔn)庫(kù)之std::list使用介紹及用法詳解

    std::list是支持常數(shù)時(shí)間從容器任何位置插入和移除元素的容器,下面這篇文章主要給大家介紹了關(guān)于C++?STL標(biāo)準(zhǔn)庫(kù)之std::list使用介紹及用法詳解的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-11-11
  • C語(yǔ)言約瑟夫環(huán)的實(shí)現(xiàn)

    C語(yǔ)言約瑟夫環(huán)的實(shí)現(xiàn)

    這篇文章主要介紹了C語(yǔ)言約瑟夫環(huán)的實(shí)現(xiàn)的相關(guān)資料,這里主要是利用數(shù)據(jù)數(shù)據(jù)結(jié)果中循環(huán)鏈表來(lái)實(shí)現(xiàn),需要的朋友可以參考下
    2017-08-08
  • C++實(shí)現(xiàn)希爾排序算法實(shí)例

    C++實(shí)現(xiàn)希爾排序算法實(shí)例

    大家好,本篇文章主要講的是C++實(shí)現(xiàn)希爾排序算法實(shí)例,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2022-01-01
  • C++之內(nèi)存泄漏排查詳解

    C++之內(nèi)存泄漏排查詳解

    這篇文章主要介紹了c++ 如何排查內(nèi)存泄漏,幫助大家更好的理解和學(xué)習(xí)使用c++,感興趣的朋友可以了解下,希望能夠給你帶來(lái)幫助
    2021-10-10
  • C語(yǔ)言編程C++動(dòng)態(tài)內(nèi)存分配示例講解

    C語(yǔ)言編程C++動(dòng)態(tài)內(nèi)存分配示例講解

    這篇文章主要介紹了C語(yǔ)言編程C++動(dòng)態(tài)內(nèi)存分配示例講解,為什么存在動(dòng)態(tài)內(nèi)存分配?本文通過(guò)動(dòng)態(tài)內(nèi)存介紹及常見(jiàn)內(nèi)存錯(cuò)誤等示例來(lái)為大家講解
    2021-09-09
  • linux下基于C語(yǔ)言的信號(hào)編程實(shí)例

    linux下基于C語(yǔ)言的信號(hào)編程實(shí)例

    這篇文章主要介紹了linux下基于C語(yǔ)言的信號(hào)編程,實(shí)例分析了信號(hào)量的基本使用技巧與相關(guān)概念,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • 關(guān)于統(tǒng)計(jì)數(shù)字問(wèn)題的算法

    關(guān)于統(tǒng)計(jì)數(shù)字問(wèn)題的算法

    本文介紹了統(tǒng)計(jì)數(shù)字問(wèn)題的算法,計(jì)算出書(shū)的全部頁(yè)碼中分別用到多少次數(shù)字0,1,2,3,.....9,并有每一步的解題思路,需要的朋友可以參考下
    2015-08-08
  • 基于C++實(shí)現(xiàn)五子棋AI算法思想

    基于C++實(shí)現(xiàn)五子棋AI算法思想

    這篇文章主要為大家詳細(xì)介紹了基于C++實(shí)現(xiàn)五子棋AI算法思想,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • C++判斷pe文件實(shí)例

    C++判斷pe文件實(shí)例

    這篇文章主要介紹了C++判斷pe文件的方法,包含了文件操作的具體實(shí)現(xiàn)方法,具有很好的參考借鑒價(jià)值,需要的朋友可以參考下
    2014-10-10
  • 詳解設(shè)計(jì)模式中的中介者模式在C++編程中的運(yùn)用

    詳解設(shè)計(jì)模式中的中介者模式在C++編程中的運(yùn)用

    這篇文章主要介紹了設(shè)計(jì)模式中的中介者模式在C++編程中的運(yùn)用,中介者模式將對(duì)象間的通信封裝到一個(gè)類中,將多對(duì)多的通信轉(zhuǎn)化為一對(duì)多的通信,降低了系統(tǒng)的復(fù)雜性,需要的朋友可以參考下
    2016-03-03

最新評(píng)論

航空| 鹤峰县| 澜沧| 沅江市| 泸水县| 专栏| 八宿县| 湘潭市| 舟山市| 辉县市| 景洪市| 全椒县| 凤阳县| 固镇县| 绥化市| 遵义市| 黑河市| 屯门区| 黄龙县| 佛冈县| 青海省| 上栗县| 甘南县| 福安市| 平舆县| 故城县| 云南省| 高安市| 朔州市| 昌邑市| 麻城市| 赤水市| 黄山市| 林甸县| 潞西市| 广灵县| 和田市| 疏勒县| 加查县| 玉田县| 巴塘县|