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

C++排序算法之選擇排序解析

 更新時(shí)間:2023年10月31日 09:16:08   作者:大慶指針  
這篇文章主要介紹了C++排序算法之選擇排序解析,遍歷數(shù)組選擇找到最大值,記錄最大值下標(biāo)maxindax,然后將最大值與最后一個(gè)值交換, 在剩下的待排序數(shù)組中,重新找到最大值,重復(fù)第一步,循環(huán)操作,直至數(shù)組排序完成,需要的朋友可以參考下

C++選擇排序

思想

遍歷數(shù)組,選擇找到最大值,記錄最大值下標(biāo)maxindax,然后將最大值與最后一個(gè)值交換,即swap(vec[maxindax],vec[n-1]);

在剩下的待排序數(shù)組中,重新找到最大值,重復(fù)第一步,swap(vec[maxidnax],vec[n-2]),循環(huán)操作,直至數(shù)組排序完成。

代碼

#include<iostream>
#include<vector>
using namespace std;
void selectSort(vector<int>&vec,int n)
{
	//j代表是待排序數(shù)組的個(gè)數(shù),下標(biāo)對(duì)應(yīng)就是0到j(luò)-1
	for (int j = n; j >= 1; j--)
	{
		int max = vec[0];
		int maxindax = 0;
		for (int i = 0; i < j; i++)
		{
			if (vec[i] > max)
			{
				//找到最大數(shù),并且記錄下標(biāo)maxIndax
				max = vec[i];
				maxindax = i;
			}
		}
		//交換最大值與待排序數(shù)組的最后一個(gè)
		swap(vec[maxindax], vec[j - 1]);
	}
}
int main()
{
	vector<int>vec = { 2,3,5,8,9,7,4,6,1 };
	selectSort(vec, vec.size());
	for (auto it : vec)
	{
		cout << it << " ";
	}
	return 0;
}

解析

時(shí)間復(fù)雜度:

第一次排序時(shí)是n個(gè)元素,比較n-1次

第二次排序時(shí)是n-1個(gè)元素,比較n-2次

...

第n-1次排序時(shí)是2個(gè)元素,比較1次

第n次排序時(shí)是1個(gè)元素,比較0次

元素交換次數(shù)為k(k<n-1次)

時(shí)間復(fù)雜度=比較次數(shù)+交換次數(shù)

故選擇排序時(shí)間復(fù)雜度為O(1+2+3+...+n-1+k)=O(n*(n-1)/2+k)=O(n2)

空間復(fù)雜度:

在原數(shù)組上操作,即使用了常數(shù)級(jí)空間O(1)。

穩(wěn)定性

穩(wěn)定性是指排序之后相同的數(shù)相對(duì)位置不變。

實(shí)例:3 2 3 1 從小到大排序(選擇最小的放前面),排序之后第二個(gè)3在第一個(gè)3前面,所以不穩(wěn)定。

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

相關(guān)文章

  • C++ 內(nèi)存管理原理分析

    C++ 內(nèi)存管理原理分析

    本章主要介紹C++的內(nèi)存管理,以C++的內(nèi)存分布作為引入,介紹C++不同于C語(yǔ)言的內(nèi)存管理方式(new delete對(duì)比 malloc free),最后為了加深讀者的理解,會(huì)介紹new和delete的底層實(shí)現(xiàn)原理
    2021-11-11
  • C++中 string 中的常用方法使用心得

    C++中 string 中的常用方法使用心得

    這篇文章主要介紹了C++中 string 中的常用方法使用心得,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-03-03
  • C語(yǔ)言實(shí)現(xiàn)動(dòng)態(tài)版通訊錄的示例代碼

    C語(yǔ)言實(shí)現(xiàn)動(dòng)態(tài)版通訊錄的示例代碼

    這篇文章主要為大家詳細(xì)介紹了如何利用C語(yǔ)言實(shí)現(xiàn)一個(gè)簡(jiǎn)單的動(dòng)態(tài)版通訊錄,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)C語(yǔ)言有一定幫助,需要的可以參考一下
    2022-08-08
  • C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單的五子棋游戲

    C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單的五子棋游戲

    這篇文章主要為大家詳細(xì)介紹了c語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單的五子棋游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • C++ 運(yùn)算符重載的使用

    C++ 運(yùn)算符重載的使用

    運(yùn)算符重載使自定義類(lèi)型支持內(nèi)置運(yùn)算符操作,提升代碼可讀性,通過(guò)成員或全局函數(shù)實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-07-07
  • C++中的類(lèi)型查詢(xún)之探索typeid和type_info(推薦)

    C++中的類(lèi)型查詢(xún)之探索typeid和type_info(推薦)

    C++ 是一種靜態(tài)類(lèi)型語(yǔ)言,這意味著每個(gè)變量的類(lèi)型在編譯時(shí)就已經(jīng)確定,在這篇技術(shù)分享中,我們將探討 C++ 中的 typeid 和 type_info,以及如何使用它們來(lái)獲取類(lèi)型信息,需要的朋友可以參考下
    2024-05-05
  • Unreal學(xué)習(xí)之簡(jiǎn)單三角形的繪制詳解

    Unreal學(xué)習(xí)之簡(jiǎn)單三角形的繪制詳解

    之所以寫(xiě)這個(gè)繪制簡(jiǎn)單三角形的實(shí)例其實(shí)是想知道如何在Unreal中通過(guò)代碼繪制自定義Mesh,如果你會(huì)繪制一個(gè)三角形,那么自然就會(huì)繪制復(fù)雜的Mesh了。所以這是很多圖形工作者的第一課,快跟隨小編一起學(xué)習(xí)起來(lái)吧
    2023-02-02
  • 關(guān)于C/C++中的side effect(負(fù)效應(yīng))和sequence point(序列點(diǎn))

    關(guān)于C/C++中的side effect(負(fù)效應(yīng))和sequence point(序列點(diǎn))

    不知你在寫(xiě)code時(shí)是否遇到這樣的問(wèn)題?int i = 3; int x = (++i) + (++i) + (++i); 問(wèn)x值為多少?進(jìn)行各種理論分析,并在編譯器上實(shí)踐,然而可能發(fā)現(xiàn)最終的結(jié)果是不正確的,也是不穩(wěn)定的,不同的編譯器可能會(huì)產(chǎn)生不同的結(jié)果。這讓人很頭疼
    2013-10-10
  • C++的原生數(shù)組你了解多少

    C++的原生數(shù)組你了解多少

    這篇文章主要為大家詳細(xì)介紹了C++的原生數(shù)組,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-02-02
  • 《戰(zhàn)狼》中兩軍作戰(zhàn)入侵代碼竟然是輸出星期幾的!

    《戰(zhàn)狼》中兩軍作戰(zhàn)入侵代碼竟然是輸出星期幾的!

    這篇文章主要介紹了《戰(zhàn)狼》中兩軍作戰(zhàn)入侵代碼竟然是輸出星期幾的,喜歡戰(zhàn)狼和編程的同學(xué)可以了解下。
    2017-11-11

最新評(píng)論

北安市| 合肥市| 怀远县| 东台市| 萨嘎县| 丽水市| 习水县| 安徽省| 丹阳市| 兴安盟| 阳朔县| 秦安县| 牡丹江市| 和田县| 阿尔山市| 孟州市| 丁青县| 怀来县| 张家港市| 株洲市| 尼木县| 印江| 光泽县| 潜江市| 花垣县| 汕头市| 泽州县| 武邑县| 河津市| 红桥区| 南开区| 罗田县| 洞口县| 星子县| 双城市| 称多县| 枣阳市| 中阳县| 田林县| 瓦房店市| 财经|