前端:JS幾種常見的排序

??作者主頁:IT技術分享社區

??作者簡介:大家好,我是IT技術分享社區的博主,從事C#、Java開發九年,對數據庫、C#、Java、前端、運維、電腦技巧等經驗豐富。

??個人榮譽: 數據庫領域優質創作者🏆,華為云享專家🏆,阿里云專家博主🏆?

??個人博客:IT技術分享社區

??公眾號/小程序:IT技術分享社區 (運營五年)

??好文章點贊 👍 收藏 ?再看,養成習慣

?

目錄

1、冒泡排序

2、選擇排序

3、快速排序


1、冒泡排序

依次比較相鄰的兩個元素,如果后一個小于前一個,則交換,這樣從頭到尾一次,就將最大的放到了末尾。

動畫演示:

? ? ? ? ?

? ? ? ? ??

?? ? ? ?

代碼:

function bubbleSort(arr) {var len = arr.length;for (var i = 0; i < len - 1; i++) {for (var j = 0; j < len - 1 - i; j++) {if (arr[j] > arr[j+1]) {        // 相鄰元素兩兩對比var temp = arr[j+1];        // 元素交換arr[j+1] = arr[j];arr[j] = temp;}}}return arr;
}

2、選擇排序

選擇排序的原理:每次都找一個最大或者最小的排在開始即可。

  1. 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置

  2. 再從剩余未排序元素中繼續尋找最小(大)元素,然后放到已排序序列的末尾。

  3. 重復第二步,直到所有元素均排序完畢。

動畫演示:

代碼:

function selectionSort(arr) {var len = arr.length;var minIndex, temp;for (var i = 0; i < len - 1; i++) {minIndex = i;for (var j = i + 1; j < len; j++) {if (arr[j] < arr[minIndex]) {     // 尋找最小的數minIndex = j;                 // 將最小數的索引保存}}temp = arr[i];arr[i] = arr[minIndex];arr[minIndex] = temp;}return arr;
}

3、快速排序

插入排序也比較簡單。就像打撲克一樣,依次將拿到的元素插入到正確的位置即可。

  1. 將第一排排序序列第一個元素看做一個有序序列,把第二個元素到最后一個元素當成是未排序序列。

  2. 從頭到尾依次掃描未排序序列,將掃描到的每個元素插入有序序列的適當位置。(如果待插入的元素與有序序列中的某個元素相等,則將待插入元素插入到相等元素的后面。)

動畫演示:

? ? ? ? ?

代碼:

function insertionSort(arr) {var len = arr.length;var preIndex, current;for (var i = 1; i < len; i++) {preIndex = i - 1;current = arr[i];while(preIndex >= 0 && arr[preIndex] > current) {arr[preIndex+1] = arr[preIndex];preIndex--;}arr[preIndex+1] = current;}return arr;
}

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

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

相關文章

bzoj3747 [POI2015]Kinoman

線段樹&#xff0c;記錄next[i]下一部與當前電影一樣的位置&#xff0c;然后枚舉區間左端點i&#xff0c;詢問線段樹最大值后刪除i到next[i-1]這段區間的觀影值&#xff0c;且增加next[i]到next[next[i]]-1這段區間的觀影值。 代碼&#xff0c;跑的有點慢 1 #include<cstdio…

java_poi教程.pdf,如何使用POI轉換.DOC / .DOCX為PDF在Java ..?

how to convert ms-document to PDF, is there any example pls sharewith me.. thanks.解決方案If you are requiered to use POI i guess you should take a look at org.apache.poi.hwpf.converterI never tried this, but i guess its worth a try atleast.It seems like y…

在線語音轉文字工具V1.0

在線語音轉文字工具V1.0介紹在線語音轉文字工具V1.0&#xff0c;采用C#開發語音基于Framework4.5開發&#xff0c;主要采用百度語音識別SDK&#xff0c;實現了在線文本轉語音的功能&#xff0c;可以轉換后直接播放。有需要的朋友可以下載學習一下。如果遇到問題的可以留言或者私…

超媒體

“超媒體”是超級媒體的縮寫。超媒體是一種采用非線性網狀結構對塊狀多媒體信息&#xff08;包括文本、圖像、視頻等&#xff09;進行組織和管理的技術。 超媒體在本質上和超文本是一樣的&#xff0c;只不過超文本技術在誕生的初期管理的對象是純文本&#xff0c;所以叫做超文本…

java局部刷新session過期_Ajax局部頁面刷新和History API結合的陷阱

ajax在現代網站已經得到非常普遍地應用&#xff0c;主要的好處大家都知道(異步加載數據&#xff0c;不用刷新整個瀏覽器&#xff0c;更小的數據傳輸尺寸)。對于那些老網站或者老項目來說全盤改造成ajax并不現實&#xff0c;于是就有了“局部頁面刷新”這個解決方案。如果不知道…

Java通過Netty,實現Websocket消息推送只需要簡單幾步

前言 曾幾何時&#xff0c;不知道大家有沒有在項目里遇到過需要服務端給客戶端推送消息的需求&#xff0c;是否曾經苦惱過、糾結過&#xff0c;我們知道要想實現這樣的需求肯定離不開websocket長連接方式&#xff0c;那么到底是該選原生的websocket還是更加高級的netty框架呢&a…

53.Maximum Subarray

/** 53.Maximum Subarray * 2016-5-7 by Mingyang * 如果我們從頭遍歷這個數組。對于數組中的其中一個元素&#xff0c;它只有兩個選擇&#xff1a; 1.* 要么加入之前的數組加和之中&#xff08;跟別人一組&#xff09; * 2. 要么自己單立一個數組&#xff08;自己單開一組&…

java 創建者設計模式_Java設計模式之創建者模式分享熱愛編程,程序人生

PS:今天的23中設計模式中的創建者方式&#xff0c;至此告一段落。我今天帶來的技術分享為創建者模式以及原型模式。當然在Java中這兩種方式很常見&#xff0c;只不過我們寫的次數確實有點低而已&#xff0c;但是這不是我不學它的借口&#xff01;&#xff01;&#xff01;創建者…

一文讀懂電感器的原理、結構、作用及分類

電感器是能夠把電能轉化為磁能而存儲起來的元件。電感器的結構類似于變壓器&#xff0c;但只有一個繞組。電感器具有一定的電感&#xff0c;它只阻礙電流的變化。 如果電感器在沒有電流通過的狀態下&#xff0c;電路接通時它將試圖阻礙電流流過它&#xff1b;如果電感器在有電流…

final關鍵字與static對比

final關鍵字與static對比 static關鍵字修飾變量時&#xff0c;會使該變量在類加載時就會被初始化&#xff0c;不會因為對象的創建再次被加載&#xff0c;當變量被static 修飾時就代表該變量只會被初始化一次 例如圖中所示&#xff0c;被static修飾的變量j&#xff0c;雖然創建…

juce中的BailOutChecker

界面庫中值得注意的一點就是對象響應事件的時候自身被刪除了&#xff0c;那么后續的訪問自然就會出問題&#xff0c;所以需要在響應事件之后先添加引用&#xff0c;相關處理之后再查看自身是否已經被刪除&#xff0c;如果已經被刪除那么就直接退出。juce中通過BailOutChecker來…

java quartz 跳過_Java Quartz計劃作業-禁止同時執行作業

我正在使用Quartz Job執行特定任務。我也在我的Main應用程序類中安排它的執行&#xff0c;而我試圖完成的工作是不允許同時執行此作業的實例。因此&#xff0c;調度程序僅應在其先前實例完成后才執行作業。這是我的工作班級&#xff1a;public class MainJob implements Job {s…

mac USB串口工具配置

安裝USB serial 驅動 我的usb serial芯片是 pl2303, 先到官網上下載對應驅動&#xff0c;并安裝。安裝完成之后會要求重啟。 http://www.prolific.com.tw/admin/Technology/GetFile.ashx?fileID238 安裝 minicom https://alioth.debian.org/projects/minicom/ 下載源碼&…

macpro生成公鑰并查看公鑰

打開macpro的終端輸入以下命令&#xff1a; $ cd ~/.ssh $ ls 此時發現沒有那個id_rsa.pub文件&#xff0c;沒有&#xff0c;就需要創建公鑰 用ssh-keygen創建公鑰 此時已經有了

java join 源碼_join on 和where 一起使用的細節

left join :左連接&#xff0c;返回左表中所有的記錄以及右表中連接字段相等的記錄。right join :右連接&#xff0c;返回右表中所有的記錄以及左表中連接字段相等的記錄。inner join: 內連接&#xff0c;又叫等值連接&#xff0c;只返回兩個表中連接字段相等的行。full join:外…

SSIS 學習之旅 FTP訪問類

這章把腳本任務訪問FTP的方法 全部給大家。 控件的使用大家如果有不懂得可以看下我之前的文章。第一章&#xff1a;SSIS 學習之旅 第一個SSIS 示例&#xff08;一&#xff09;&#xff08;上&#xff09; 第二章&#xff1a;SSIS 學習之旅 第一個SSIS 示例&#xff08;二&#…

Spring Cloud Feign 使用Apache的HTTP Client替換Feign原生httpclient

http 連接池能提升性能 http 的背景原理 a. 兩臺服務器建立 http 連接的過程是很復雜的一個過程&#xff0c;涉及到多個數據包的交換&#xff0c;并且也很耗時間。 b. Http 連接需要的 3 次握手 4 次分手開銷很大&#xff0c;這一開銷對于大量的比較小的 http 消息來說更大。…

Java容器坐標起點_Java的屏幕坐標是以像素為單位,容器的左下角被確定為坐標的起點...

【單選題】【單選題】【單選題】class A{ int x1; void func1(int x1){ this.x1 x1; } } 關于上述程序,說法錯誤的是( )【單選題】瀏覽器的作用是( )。【判斷題】構建大學生心理危機預警及干預工作機制,更好地幫助有嚴重心理問題的學生度過心理難關,及早預防、及時疏導、有效干…