电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

TypeScript十大排序算法之選擇排序實現示例詳解

瀏覽:32日期:2022-06-01 13:19:17
目錄
  • 一. 選擇排序的定義
  • 二. 選擇排序的流程
  • 三. 選擇排序的圖解
  • 四. 選擇排序的代碼
  • 五. 選擇排序的時間復雜度
  • 六. 選擇排序的總結

一. 選擇排序的定義

選擇排序(Selection Sort)是一種簡單的排序算法。

它的基本思想是:

  • 首先在未排序的數列中找到最小(大)元素,然后將其存放到數列的起始位置;
  • 接著,再從剩余未排序的元素中繼續尋找最小(大)元素,然后放到已排序序列的末尾。
  • 以此類推,直到所有元素均排序完畢。

選擇排序的主要優點與數據移動有關。

  • 如果某個元素位于正確的最終位置,則它不會被移動。
  • 選擇排序每次交換一對元素,它們當中至少有一個將被移到其最終位置上,因此對n個元素的表進行排序總共進行至多n-1次交換。
  • 在所有的完全依靠交換去移動元素的排序方法中,選擇排序屬于非常好的一種。

選擇排序的實現方式很簡單,并且容易理解,因此它是學習排序算法的很好的入門途徑。

二. 選擇排序的流程

選擇排序流程詳細步驟:

  • 首先將要排序的數組復制到一個新數組中,這樣原數組不會被改變。
  • 初始化最小數字的索引值為0,然后在數組中循環,在當前索引后面的元素中找到最小的數字的索引。
  • 如果當前索引位置的數字不是最小數字,那么將這兩個數字互換。
  • 繼續尋找下一個數字,直到索引到最后一個元素,此時整個數組已經是從小到大排序的了。
  • 重復上面的步驟,每次排序的范圍都會減少一個,直到整個數組排序完畢。

三. 選擇排序的圖解

四. 選擇排序的代碼

以下是 TypeScript 實現的選擇排序代碼:

function selectionSort(arr: number[]): number[] {  // 循環遍歷整個數組  for (let i = 0; i < arr.length; i++) {    // 預設最小數的索引為當前循環的索引    let minIndex = i;    // 在后面的數中尋找更小的數    for (let j = i + 1; j < arr.length; j++) {      if (arr[j] < arr[minIndex]) {// 如果找到更小的數,記錄它的索引minIndex = j;      }    }    // 如果當前循環的索引不是最小數的索引,交換它們    if (i !== minIndex) {      [arr[i], arr[minIndex]] = [arr[minIndex], arr[i]];    }  }  // 返回排序后的數組  return arr;}// 測試數據const testArr = [5, 2, 9, 1, 5, 6];// 調用插入排序函數const sortedArr = selectionSort(testArr);// 打印結果console.log(sortedArr);

以下是代碼的詳細說明:

  • 首先循環遍歷整個數組。
  • 在每一次循環中,預設最小數的索引為當前循環的索引。
  • 在后面的數中尋找更小的數,如果找到更小的數,記錄它的索引。
  • 如果當前循環的索引不是最小數的索引,交換它們。
  • 重復步驟2-4,直到遍歷完整個數組。
  • 返回排序后的數組。

五. 選擇排序的時間復雜度

計算選擇排序算法的時間復雜度,通常是通過分析算法中每一步的執行次數來確定的。

我們分析選擇排序中的每一步,再將每一步的時間復雜度加起來,最后得到的就是選擇排序的時間復雜度。

在選擇排序中,最多的操作是內層循環,其執行了N-1次,并且每次執行內層循環都要花費O(N)的時間。

  • 因此,內層循環的時間復雜度是O(N^2)。

外層循環也要執行N-1次,因此,它的時間復雜度也是O(N^2)。

  • 所以,整個選擇排序算法的時間復雜度是O(N^2)。

六. 選擇排序的總結

  • 選擇排序是一種簡單易懂的排序算法。
  • 它的基本思想是遍歷整個列表,每次找出最小的元素,并且將它移到列表的最左邊,重復這個過程直到整個列表都有序排列。
  • 在平均情況下,選擇排序的時間復雜度為 O(n^2),在最壞情況下與最好情況下都為 O(n^2)。
  • 選擇排序在數據規模較小時非常適用,在數據規模較大時不夠高效。

以上就是TypeScript十大排序算法之選擇排序實現示例詳解的詳細內容,更多關于TypeScript 選擇排序算法的資料請關注其它相關文章!

標簽: JavaScript
主站蜘蛛池模板: 香蕉筛|直线|等厚|弧形|振动筛|香蕉筛厂家-洛阳隆中重工 | 德国进口电锅炉_商用电热水器_壁挂炉_电采暖器_电热锅炉[德国宝] | 防爆大气采样器-防爆粉尘采样器-金属粉尘及其化合物采样器-首页|盐城银河科技有限公司 | 金库门,金库房,金库门厂家,金库门价格-河北特旺柜业有限公司 | 精密机械零件加工_CNC加工_精密加工_数控车床加工_精密机械加工_机械零部件加工厂 | 科研ELISA试剂盒,酶联免疫检测试剂盒,昆虫_植物ELISA酶免试剂盒-上海仁捷生物科技有限公司 | 不锈钢反应釜,不锈钢反应釜厂家-价格-威海鑫泰化工机械有限公司 不干胶标签-不干胶贴纸-不干胶标签定制-不干胶标签印刷厂-弗雷曼纸业(苏州)有限公司 | 挖掘机挖斗和铲斗生产厂家选择徐州崛起机械制造有限公司 | 写方案网_方案策划方案模板下载| 专业广州网站建设,微信小程序开发,一物一码和NFC应用开发、物联网、外贸商城、定制系统和APP开发【致茂网络】 | 建大仁科-温湿度变送器|温湿度传感器|温湿度记录仪_厂家_价格-山东仁科 | 电磁铁_推拉电磁铁_机械手电磁吸盘电磁铁厂家-广州思德隆电子公司 | 全国冰箱|空调|洗衣机|热水器|燃气灶维修服务平台-百修家电 | 垃圾处理设备_餐厨垃圾处理设备_厨余垃圾处理设备_果蔬垃圾处理设备-深圳市三盛环保科技有限公司 | 恒压供水控制柜|无负压|一体化泵站控制柜|PLC远程调试|MCGS触摸屏|自动控制方案-联致自控设备 | 电池高低温试验箱-气态冲击箱-双层电池防爆箱|简户百科 | 电池挤压试验机-自行车喷淋-车辆碾压试验装置-深圳德迈盛测控设备有限公司 | 冷却塔风机厂家_静音冷却塔风机_冷却塔电机维修更换维修-广东特菱节能空调设备有限公司 | 电加热导热油炉-空气加热器-导热油加热器-翅片电加热管-科安达机械 | 洗地机_全自动洗地机_手推式洗地机【上海滢皓环保】 | 山西3A认证|太原AAA信用认证|投标AAA信用证书-山西AAA企业信用评级网 | 红立方品牌应急包/急救包加盟,小成本好项目代理_应急/消防/户外用品加盟_应急好项目加盟_新奇特项目招商 - 中红方宁(北京) 供应链有限公司 | 123悬赏网_发布悬赏任务_广告任务平台 | HDPE储罐_厂家-山东九州阿丽贝防腐设备 | 河南新乡德诚生产厂家主营震动筛,振动筛设备,筛机,塑料震动筛选机 | 拉卡拉POS机官网 - 官方直营POS机办理|在线免费领取 | 阜阳成人高考_阜阳成考报名时间_安徽省成人高考网 | 小学教案模板_中学教师优秀教案_高中教学设计模板_教育巴巴 | 河南mpp电力管_mpp电力管生产厂家_mpp电力电缆保护管价格 - 河南晨翀实业 | PC构件-PC预制构件-构件设计-建筑预制构件-PC构件厂-锦萧新材料科技(浙江)股份有限公司 | 无负压供水设备,消防稳压供水设备-淄博创辉供水设备有限公司 | 北京网站建设|北京网站开发|北京网站设计|高端做网站公司 | 锻造液压机,粉末冶金,拉伸,坩埚成型液压机定制生产厂家-山东威力重工官方网站 | 贴片电容-贴片电阻-二三极管-国巨|三星|风华贴片电容代理商-深圳伟哲电子 | 佛山市钱丰金属不锈钢蜂窝板定制厂家|不锈钢装饰线条|不锈钢屏风| 电梯装饰板|不锈钢蜂窝板不锈钢工艺板材厂家佛山市钱丰金属制品有限公司 | 河南不锈钢水箱_地埋水箱_镀锌板水箱_消防水箱厂家-河南联固供水设备有限公司 | 聚氨酯复合板保温板厂家_廊坊华宇创新科技有限公司 | 金属雕花板_厂家直销_价格低-山东慧诚建筑材料有限公司 | led太阳能路灯厂家价格_风光互补庭院灯_农村市政工程路灯-中山华可路灯品牌 | 百方网-百方电气网,电工电气行业专业的B2B电子商务平台 | 手机存放柜,超市储物柜,电子储物柜,自动寄存柜,行李寄存柜,自动存包柜,条码存包柜-上海天琪实业有限公司 |