久久99久久人婷婷精品综合_超碰aⅴ人人做人人爽欧美_亚洲电影第三页_日韩欧美一中文字暮专区_波多野结衣的一区二区三区_婷婷在线播放_人人视频精品_国产精品日韩精品欧美精品_亚洲免费黄色_欧美性猛交xxxxxxxx

選擇排序和插入排序(三十)-創新互聯

今天我們來看下排序,那么什么是排序呢?排序是計算機內部經常進行的一種操作,其目的是將一組“無序”的數據元素調整為“有序”的數據元素。那么排序的數學定義時什么呢?如下

創新互聯主營遂溪網站建設的網絡公司,主營網站建設方案,app軟件定制開發,遂溪h5重慶小程序開發公司搭建,遂溪網站營銷推廣歡迎遂溪等地區企業咨詢

選擇排序和插入排序(三十)

下來我們來看一個概念:排序的穩定性。什么是排序的穩定性呢?它是指如果在序列中有兩個數據元素 r[i]和 r[j],它們的關鍵字 k[i]== k[j],且在排序之前,對象 r[i]排在 r[j]前面;如果在排序之后,對象 r[i]仍在 r[j]的前面,則稱這個排序方法是穩定的,否則稱這個排序方法是不穩定的。

下來我們來看看多關鍵字排序。這個就是在排序時需要比較的關鍵字多余一個,那么是什么意思呢?就是當排序結果首先按關鍵字 1 進行排序,當關鍵字 1 相同時按關鍵字 2 進行排序;...;當關鍵字 n-1 相同時按關鍵字 n 進行排序。對于多關鍵字排序,我們只需要在比較操作時同時考慮多個關鍵字即可。下來我們通過一個示例代碼來進行分析

#include?<iostream>
#include?"Object.h"

using?namespace?std;
using?namespace?DTLib;

struct?Test?:?public?Object
{
????int?key1;
????int?key2;

????Test(int?k1,?int?k2)
????{
????????key1?=?k1;
????????key2?=?k2;
????}

????bool?operator?==(const?Test&?t)
????{
????????return?(key1?==?t.key1)?&&?(key2?==?t.key2);
????}

????bool?operator?!=(const?Test&?t)
????{
????????return?!(*this?==?t);
????}

????bool?operator?>(const?Test&?t)
????{
????????return?(key1?>?t.key1)?||?((key1?==?t.key1)?&&?(key2?>?t.key2));
????}

????bool?operator?<=(const?Test&?t)
????{
????????return?!(*this?>?t);
????}

????bool?operator?<(const?Test&?t)
????{
????????return?(key1?<?t.key1)?||?((key1?==?t.key1)?&&?(key2?<?t.key2));
????}

????bool?operator?>=(const?Test&?t)
????{
????????return?!(*this?<?t);
????}
};

int?main()
{
????Test?t1(3,?4);
????Test?t2(3,?5);
????
????Test?t3(2,?4);
????Test?t4(1,?2);

????cout?<<?"t1?<?t2?:?"?<<?(t1?<?t2)?<<?endl;
????cout?<<?"t3?>?t4?:?"?<<?(t3?>?t4)?<<?endl;

????return?0;
}

下來我們來看看輸出結果

選擇排序和插入排序(三十)

在上面的示例中,我們看到排序中的關鍵操作:比較和交換。比較是指任意兩個數據元素通過比較操作確定先后次序;交換是指數據元素之間需要交換才能得到預期結果。那么我們在進行排序的時候怎么進行判斷這個排序是優是劣呢?從下面三個方面來進行判斷。1、時間性能:關鍵性能差異體現在比較和交換的數量;2、輔助存儲空間:為完成排序操作所需要額外的存儲空間,必要時可以“空間換時間”;3、算法的實現復雜性:過于復雜的排序法可能影響可讀性和可維護性。

下來我們來看看 DTLib 庫中的排序類的設計,如下

選擇排序和插入排序(三十)

我們來基于上面的排序類來進一步實現選擇排序和插入排序。

1、選擇排序:它的基本思想是每次(例如第 i 次,i = 0, 1, ..., n-2)從后面 n-i 個待排的數據元素中選出關鍵字最小的元素,作為有序元素序列第 i 個元素。第 i 次選擇排序示例如下

選擇排序和插入排序(三十)

我們來看看具體是怎么實現的,如下所示

選擇排序和插入排序(三十)

選擇排序和插入排序(三十)

我們看到是從第一個開始,選出最小的數據元素,后面以此類推,直至最后全部排序完畢。下來我們來具體看看源碼是怎樣實現的

#ifndef?SORT_H
#define?SORT_H

#include?"Object.h"

namespace?DTLib
{

class?Sort?:?public?Object
{
private:
????Sort();
????Sort(const?Sort&);
????Sort&?operator=?(const?Sort&);

????template?<typename?T>
????static?void?Swap(T&?a,?T&?b)
????{
????????T?c(a);
????????a?=?b;
????????b?=?c;
????}
public:
????template?<?typename?T?>
????static?void?Select(T?array[],?int?len,?bool?min2max?=?true)
????{
????????for(int?i=0;?i<len;?i++)
????????{
????????????int?min?=?i;

????????????for(int?j=i+1;?j<len;?j++)
????????????{
????????????????if(min2max???(array[min]?>?array[j])?:?(array[min]?<?array[j]))
????????????????{
????????????????????min?=?j;
????????????????}
????????????}

????????????if(?min?!=?i?)
????????????{
????????????????Swap(array[i],?array[min]);
????????????}
????????}
????}
};

}

#endif?//?SORT_H

測試代碼如下

#include?<iostream>
#include?"Sort.h"

using?namespace?std;
using?namespace?DTLib;

int?main()
{
????int?array[]?=?{3,?2,?4,?1,?5};

????Sort::Select(array,?5);

????for(int?i=0;?i<5;?i++)
????{
????????cout?<<?array[i]?<<?endl;
????}
}

我們來看看運行結果

選擇排序和插入排序(三十)

我們在代碼中默認是從小到大的進行排序,我們在選擇排序時,再輸入第三個參數 false,看看它是否是從大到小進行排序的

選擇排序和插入排序(三十)

通過上面的排序可知,在排完序后,數據元素的位置已經改動。因此,選擇排序是不穩定排序

2、插入排序:它的基本思想是當插入第 i(i >= 1) 個數據元素時,其那面的 V[0], V[1], ..., V[i-1] 已經排好序;這時,用 V[i] 的關鍵字與 V[i-1],V[i-2],...,V[0] 的關鍵字進行比較,找到位置后將 V[i] 插入,原來位置上的對象向后順移。第 i 次插入排序示例如下

選擇排序和插入排序(三十)

我們來看看具體是怎么實現的,如下所示

選擇排序和插入排序(三十)

選擇排序和插入排序(三十)

最后的結果為

選擇排序和插入排序(三十)

我們看到它是通過比較來得出具體位置的。那么我們在下面的代碼中直接從后向前來進行比較,具體源碼如下

template?<?typename?T?>
static?void?Insert(T?array[],?int?len,?bool?min2max?=?true)
{
????for(int?i=1;?i<len;?i++)
????{
????????int?k?=?i;
????????T?e?=?array[i];

????????for(int?j=i-1;?(j>=0)?&&?(min2max???(array[j]>e)?:?(array[j]<e));?j--)
????????{
????????????array[j+1]?=?array[j];
????????????k?=?j;
????????}

????????if(?k?!=?i?)
????????{
????????????array[k]?=?e;
????????}
????}
}

我們來看看使用 Insert 排序方法是否和之前使用 Select 排序方法實現的效果是一樣的,結果如下(還是加上 false 參數)

選擇排序和插入排序(三十)

我們看到效果是完全一樣的。那么根據上面的方法可知,在進行插入排序時,數據元素的相對順序不需要改動,因此插入排序是穩定排序。通過對選擇排序和插入排序的學習,總結如下:1、排序是數據元素從無序到有序的過程;2、排序具有穩定性,是選擇排序算法的因素之一;3、比較和交換是排序的基本操作,多關鍵字排序與單關鍵字排序無本質區別;4、排序的時間性能是區分排序算法好壞的主要因素;5、選擇排序每次選擇未排元素中的最小元素,插入排序每次將第 i 個元素插入前面 i-1 個已排元素中;6、選擇排序是不穩定的排序法,插入排序是穩定的排序方法;7、選擇排序和插入排序的時間復雜度為 O(n2)。

網頁題目:選擇排序和插入排序(三十)-創新互聯
標題鏈接:http://www.js-pz168.com/article34/cohepe.html

成都網站建設公司_創新互聯,為您提供搜索引擎優化網站改版企業建站網頁設計公司網站導航網站收錄

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

成都app開發公司
久久99久久人婷婷精品综合_超碰aⅴ人人做人人爽欧美_亚洲电影第三页_日韩欧美一中文字暮专区_波多野结衣的一区二区三区_婷婷在线播放_人人视频精品_国产精品日韩精品欧美精品_亚洲免费黄色_欧美性猛交xxxxxxxx
国产精品丝袜黑色高跟| 美女在线视频一区| 久久99国产精品尤物| 成人精品视频.| 欧美日韩在线精品| 欧美蜜桃一区二区三区| 国产精品视频观看| 欧美aaaaaa午夜精品| av电影在线观看不卡| 日本一区二区三区四区在线观看| 欧美片网站yy| 国产精品每日更新| 久久99精品久久久久久动态图| 69174成人网| 亚洲国产高清国产精品| 日韩女优制服丝袜电影| 亚洲精品国产a| 国产aⅴ精品一区二区三区色成熟| 久久福利电影| 欧美男男青年gay1069videost| 国产精品国产三级国产aⅴ原创| 日本vs亚洲vs韩国一区三区二区| 91美女片黄在线观看91美女| 一区二区三区欧美成人| 国产婷婷一区二区| 日本美女一区二区三区| av一区二区三区四区电影| 欧日韩精品视频| 中文av一区二区| 久99久精品视频免费观看| 精品久久久久久一区| 欧美精品国产精品| 一区二区三区.www| 99精品视频在线免费观看| 91久久国产最好的精华液| 国产日韩欧美一区二区三区乱码| 麻豆视频一区二区| 久久综合给合久久狠狠色| 91精品国产黑色紧身裤美女| 亚洲综合av网| 91蝌蚪porny九色| 欧美日韩一区二区在线观看| 亚洲精品国产一区二区精华液| 成人美女视频在线观看18| 色中色一区二区| 亚洲视频综合在线| 成人97人人超碰人人99| 欧美做爰猛烈大尺度电影无法无天| 国产精品久久免费看| 国产激情视频一区二区在线观看 | 欧美日韩精品欧美日韩精品| 亚洲欧美一区二区在线观看| 丁香网亚洲国际| 一区二区三区精品国产| 中文字幕视频一区二区三区久| 福利电影一区二区三区| 色又黄又爽网站www久久| 亚洲视频一区二区免费在线观看| 成人丝袜高跟foot| 亚洲一区尤物| 日韩美女啊v在线免费观看| 不卡电影一区二区三区| 欧美性感一区二区三区| 亚洲网友自拍偷拍| 激情小说综合区| 久久影院午夜论| 国产精品123区| 欧美在线短视频| 亚洲3atv精品一区二区三区| 久久精品人成| 国产欧美日韩在线| 成人精品鲁一区一区二区| 欧美少妇bbb| 日本亚洲电影天堂| 日本不卡久久| 亚洲少妇中出一区| 国产福利一区二区三区在线观看| 欧美大片拔萝卜| 国产在线精品一区二区夜色| 色老汉一区二区三区| 亚洲午夜三级在线| 久久五月天婷婷| 欧美高清在线一区| 91精品国自产在线观看| 欧美成人高清电影在线| 国产激情一区二区三区四区| 欧美三片在线视频观看| 日韩和的一区二区| 亚洲一区二区精品在线观看| 依依成人精品视频| 国内精品国语自产拍在线观看| 国产亚洲欧美日韩在线一区| 成人久久视频在线观看| 91精品国产综合久久香蕉麻豆| 久久精品国产77777蜜臀| 色综合咪咪久久| 午夜成人免费视频| 色噜噜狠狠色综合网| 一区二区三区高清在线| 欧美另类视频在线| 亚洲男人的天堂av| 欧美婷婷久久| 一区二区三区在线观看视频| 蜜桃精品久久久久久久免费影院| 中文字幕一区二区在线观看| 国产一区二区三区黄| 国产精品久久久久一区| 国产欧美综合精品一区二区| 中文字幕第一区综合| 国产91一区二区三区| 日本一区二区三区免费乱视频| 97netav| 亚洲国产成人午夜在线一区| 国产精品初高中精品久久| 中文文精品字幕一区二区| 国精产品一区二区| 亚洲美女少妇撒尿| 日韩精品第一页| 香蕉久久一区二区不卡无毒影院| 一区二区在线中文字幕电影视频| 婷婷六月综合亚洲| 欧美亚洲日本一区| 国产精品一卡二卡在线观看| 日韩欧美色综合| 91浏览器打开| 国产精品另类一区| 欧美中日韩一区二区三区| 亚洲成人综合网站| 欧美亚日韩国产aⅴ精品中极品| 精品无码三级在线观看视频| 欧美一级日韩不卡播放免费| av在线播放不卡| 国产精品天天看| 欧美精品免费观看二区| 五月综合激情日本mⅴ| 欧美在线观看视频一区二区 | 自拍偷拍欧美激情| 日韩高清av电影| 免费在线视频一区| 欧美一区二区三区在线观看| 99久久99久久精品免费看蜜桃| 欧美激情艳妇裸体舞| 欧美日韩一区二| 三级久久三级久久久| 欧美群妇大交群中文字幕| eeuss鲁一区二区三区| 国产精品嫩草影院av蜜臀| 日本在线观看一区二区| 蜜桃av一区二区三区电影| 欧美一级淫片007| 成人av资源| 亚洲国产精品久久久久秋霞影院 | 婷婷国产在线综合| 欧美丰满高潮xxxx喷水动漫| av电影天堂一区二区在线观看| 国产精品久久久久精k8| 亚洲精品中文字幕在线 | 国产91精品在线观看| 欧美国产欧美综合| 神马影院午夜我不卡| 狠狠色丁香九九婷婷综合五月| 久久欧美中文字幕| 热re99久久精品国99热蜜月| 裸体在线国模精品偷拍| xf在线a精品一区二区视频网站| 精品欧美国产一区二区三区不卡| 天天色图综合网| 日韩欧美中文字幕公布| 精品不卡一区二区三区| 男人操女人的视频在线观看欧美| 日韩精品自拍偷拍| 久久综合给合久久狠狠色| 精品在线免费视频| 国产欧美日韩另类视频免费观看| 色一情一乱一伦一区二区三区丨| 国产伦理精品不卡| 综合分类小说区另类春色亚洲小说欧美| 一本色道综合亚洲| 97国产一区二区| 亚洲18女电影在线观看| 欧美videossexotv100| 欧美不卡福利| 国产精品自拍在线| 综合网在线视频| 欧美日韩mp4| 九色91在线视频| 国产麻豆精品95视频| 日韩理论片在线| 在线电影欧美成精品| 久久艳妇乳肉豪妇荡乳av| 国产麻豆欧美日韩一区| 亚洲色图第一区| 欧美一区二区三区视频在线| 欧美不卡福利| 成人一区二区视频| 亚洲国产日韩一级| 久久综合久久99| 在线亚洲免费视频| 国产亚洲一区二区三区在线播放 | 成人精品视频一区二区三区|