前端javascript中的排序算法之選擇排序

選擇排序(Selection Sort)基本思想
是一種原址排序法
將數組分為兩個區間:左側為已排序區間,右側為未排序區間。每趟從未排序區間中選擇一個值最小的元素,放到已排序區間的末尾,從而將該元素劃分到已排序區間。

請添加圖片描述

代碼實現

function selectSort(arr) {const len = arr.length;let indexMin = 0;//迭代到最后一項時,前面已經排好序,無需再循環for (let i = 0; i < len - 1; i++) {indexMin = i;//每一輪迭代中,找到最小的值for (let j = i; j < len; j++) {if (arr[indexMin] > arr[j]) {indexMin = j;}}//默認最小值與實際的最小值不相同,則交換if (i != indexMin) {swap(arr, i, indexMin);}}return arr;
}function swap(arr, i, j) {const temp = arr[i];arr[i] = arr[j];arr[j] = temp;
}

復雜度

  • 時間復雜度O(1),只用到了幾個輔助的常量,i,j及最小位置minIndex
  • 空間復雜度O(n2)

代碼測試

 const arr = [10,23,4,5,49,123,456]const res = selectSort(arr)console.log("🚀 ~ res:", res)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/43382.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/43382.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/43382.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

玩轉springboot之為什么springboot可以直接執行

為什么springboot可以直接執行 先看一下springboot打包生成的MANIFEST.MF內容是什么 Manifest-Version: 1.0Implementation-Title: exam-adminImplementation-Version: 1.0-SNAPSHOTStart-Class: com.zhanghe.exam.ApplicationSpring-Boot-Classes: BOOT-INF/classes/Spring-Bo…

小米采取措施禁止國行版設備安裝國際版系統 刷機后將報錯無法進入系統

據知名官改版系統 Xiaomi.EU 測試者 Kacper Skrzypek 發布的消息&#xff0c;小米目前已經在開機引導中新增區域檢測機制&#xff0c;該機制將識別硬件所屬的市場版本&#xff0c;例如中國大陸市場銷售的小米即將在安裝國際版系統后將無法正常啟動。 測試顯示該檢測機制是在開…

1.DDR3 SO-DIMM 內存條硬件總結

最近在使用fpga讀寫DDR3&#xff0c;板子上的DDR3有兩種形式與fpga相連&#xff0c;一種是直接用ddr3內存顆粒&#xff0c;另一種是通過內存條的形式與fpga相連。這里我們正好記錄下和ddr3相關的知識&#xff0c;先從DDR3 SO-DIMM 內存條開始。 1.先看內存條的版本 從JEDEC下載…

四步帶你實現【Open3d】--邊緣檢測

Open3D邊緣檢測技術從3D數據中精準識別并提取邊界&#xff0c;對于場景解析、物體輪廓提取等任務至關重要。Open3D提供多種算法&#xff0c;幫助用戶高效實現邊緣檢測&#xff0c;促進3D數據的深度分析和應用。 一、安裝 pip install open3d # 即可 二、使用 首先&#…

《算法筆記》總結No.5——遞歸

一.分而治之 將原問題劃分為若干個規模較小而結構與原問題相同或相似的子問題&#xff0c;然后分別解決這些子問題&#xff0c;最后合并子問題的解&#xff0c;即可得到原問題的解&#xff0c;步驟抽象如下&#xff1a; 分解&#xff1a;將原問題分解為若干子問題解決&#x…

用VLM訓練實時計算機視覺模型

經過數十億個參數訓練的 AI 模型非常強大&#xff0c;但并不總是適合實時使用。但是&#xff0c;它們可以通過自動監督快速專用模型的標注來減少人力投入。 ? 如果你曾經構建過計算機視覺模型&#xff0c;就就會知道監督需要大量工作——人類花時間&#xff08;數小時或數天&a…

自動化測試全攻略:從入門到精通!

1、自動化測試專欄 隨著技術的發展和工作需求的增長&#xff0c;自動化測試已成為軟件質量保障體系中不可或缺的一環。 為了幫助廣大測試工程師、開發者和對自動化測試感興趣的讀者們更好地掌握這一技能&#xff0c;今年特別推出了全新的《自動化測試全攻略&#xff1a;從入門…

scratch繪制四個三角形 2024年6月中國電子學會 圖形化編程 scratch編程等級考試二級真題和答案解析

scratch繪制四個三角形 一、題目要求 2024年6月電子學會圖形化編程Scratch等級考試二級真題 1、準備工作 1.保留默認角色小貓; 2.添加背景Stars。 2、功能實現 1 .隱藏角色小貓&#xff0c;設置畫筆裙始位置為(0,0)&#xff0c;畫筆顏色為黃色&#xff0c;畫筆的粗細為5…

Scala Trait(特征)

Scala Trait(特征) Scala中的Trait是一種特殊的概念,它類似于Java中的接口,但提供了更多的功能。Trait允許我們定義一組方法,這些方法可以被子類實現,同時還可以包含方法的實現。這使得Trait既具有接口的靈活性,又具有抽象類的實用性。在本文中,我們將深入探討Scala Tra…

NET Core 中的空對象設計模式

介紹 一種稱為“空對象模式”的行為設計模式提供了一個對象來表示接口缺少的對象。在空對象會導致空引用異常的情況下&#xff0c;這是一種提供替代行為的方法。在本文中&#xff0c;我們將深入探討 C# 空對象模式&#xff0c;并逐步解決更復雜的情況。 空對象設計模式它是什…

k8s離線部署芋道源碼前端

目錄 概述 編譯Dockerfile 構建Dockerfilenginx.conf構建 k8s部署前端鏡像部署ingress 概述 本篇將對 k8s離線部署芋道源碼前端 進行詳細的說明&#xff0c;對如何構建 Dockerfile&#xff0c;如何整合 Nginx&#xff0c;如何整合 ingress 進行實踐。 相關文章&#xff1a;naco…

python 進階教程--PIL圖像處理

PIL圖像處理 1. Pillow庫簡介2. 圖像處理基礎3. 圖像操作4. 圖像增強5. 圖像處理進階6. 圖像繪制7. 圖像序列和動畫8. 圖像識別和特征提取9. 實戰項目10. 常見問題解答 1. Pillow庫簡介 PIL與Pillow的關系 PIL&#xff08;Python Imaging Library&#xff09;是一個提供圖像處…

【云原生之kubernetes實戰】在k8s環境下部署OrangeHRM人力資源管理系統

【云原生之kubernetes實戰】在k8s環境下部署OrangeHRM人力資源管理系統 一、OrangeHRM介紹1.1 OrangeHRM 簡介1.2 OrangeHRM特點1.3 OrangeHRM使用場景二、相關知識介紹2.1 本次實踐存儲介紹2.2 k8s存儲介紹三、本次實踐介紹3.1 本次實踐簡介3.2 本次環境規劃3.3 部署前需準備工…

bash終端快捷鍵

快捷鍵作用ShiftCtrlC復制ShiftCtrlV粘貼CtrlAltT新建終端ShiftPgUp/PgDn終端上下翻頁滾動CtrlC終止命令CtrlD關閉終端CtrlA光標移動到最開始為止CtrlE光標移動到最末尾CtrlK刪除此處到末尾的所有內容CtrlU刪除此處至開始的所有內容CtrlD刪除當前字符CtrlH刪除當前字符的前一個…

Perl 語言開發(十):正則表達式,掌握強大文本處理的利器

目錄 1. 正則表達式概述 2. 基礎正則表達式語法 2.1 字符和字符類 2.2 預定義字符類 2.3 量詞 2.4 分組和捕獲 2.5 反向引用 3. Perl 中的正則表達式操作 3.1 匹配操作 3.2 替換操作 3.3 分割操作 4. 正則表達式的高級特性 4.1 非捕獲分組 4.2 前瞻和后顧 4.3 負…

Hugging face Transformers(4)—— Model

Hugging Face 是一家在 NLP 和 AI 領域具有重要影響力的科技公司&#xff0c;他們的開源工具和社區建設為NLP研究和開發提供了強大的支持。它們擁有當前最活躍、最受關注、影響力最大的 NLP 社區&#xff0c;最新最強的 NLP 模型大多在這里發布和開源。該社區也提供了豐富的教程…

【Bug優化】支付寶支付中“交易訂單處理失敗,請稍后再試”問題

引言 近期&#xff0c;一位友友問&#xff1a;他在集成支付寶支付功能時遇到了一個棘手的問題&#xff0c;當用戶在支付過程中選擇放棄支付&#xff0c;嘗試重新支付同一訂單時&#xff0c;前端會顯示“交易訂單處理失敗&#xff0c;請稍后再試”。 這個問題的核心在于支…

文章SameStr(一):圖1代碼

“Publication Figure 1” 百度云盤鏈接: https://pan.baidu.com/s/15g7caZp354zIWktpnWzWhQ 提取碼: 4sh7 Libraries Standard Import library(tidyverse) library(cowplot) library(scales) library(ggpubr)Special # devtools::install_github("pmartinezarbizu/…

linux 代理export

export http_proxyhttp://10.67.11.138:7890 export https_proxyhttp://10.67.11.138:7890

大/小端模式與位操作

文章目錄 1. 大小端模式 2. 大端模式&#xff08;Big-endian&#xff09; 3. 小端模式&#xff08;Little Endian&#xff09; 4. 判斷和轉換大小端模式 5. 位操作 5.1 移位操作 5.2 取反操作 5.3 位與操作 5.4 位或操作 5.5 置位操作 5.6 清位操作 1. 大小端模式 …