JS中冒泡排序,選擇排序,快速排序

来源:https://www.cnblogs.com/suihang/archive/2018/08/17/9495302.html
-Advertisement-
Play Games

var arr = [1,4,2,9,7,6,5,4,7,5]; // 冒泡排序(通俗的說就是j 和 j+1打,誰贏了誰去後面) for(var i = 1;i<arr.length;i++){ for(var j = 0;j<arr.length - i;j++){ if(arr[j]>arr[j ...


    var arr = [1,4,2,9,7,6,5,4,7,5];     // 冒泡排序(通俗的說就是j 和 j+1打,誰贏了誰去後面)       for(var i = 1;i<arr.length;i++){         for(var j = 0;j<arr.length - i;j++){             if(arr[j]>arr[j+1]){                 var temp =  arr[j];                 arr[j] = arr[j+1];                 arr[j+1] = temp;             }         }     }     console.log(arr);

    // 選擇排序(通俗的說就是j 和i打,誰贏了誰去前面)       for(var i = 0;i<arr.length-1;i++){         for(var j = i+1;j<arr.length;j++){             if(arr[i]>arr[j]){                 var temp = arr[j];                 arr[j] = arr[i];                 arr[i] = temp;             }         }     }     console.log(arr);


    //速排序:         取數組中間下標的值,再將其他值與該值相比,大於加入右數組,小於加入左數組,遞歸調用       function quick(arr){         // 遞歸出口條件         if(arr.length<=1){return arr;}         // 獲取中間下標         var centerindex = arr.length%2==0?arr.length/2:(arr.length+1)/2;         // 獲取中間下標對應的值         var centerElement = arr[centerindex];         // 創建左右數組         var left = [];         var right = [];         // 迴圈判斷,若元素大於中間下表對應的值則加入左數組,反之加入右數組         for(var i = 0;i<arr.length;i++){             if((i!=centerindex)&&(arr[i]>=centerElement)){                 right.push(arr[i]);             }             if((i!=centerindex)&&(arr[i]<centerElement)){                 left.push(arr[i]);             }         }         //遞歸調用該函數         return quick(left).concat(centerElement).concat(quick(right));     }    console.log(quick(arr));
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 自定義SurfaceView 主要步驟: 實現SurfaceHolder.Callback介面,創建SurfaceView的生命周期 實現Camera.PreviewCallback介面,創建預覽回調介面 創建Camera打開相機 實例: FrameCallback回調介面 MainActivity ...
  • 一.Jquery的基本功能 二.Jquery選擇器 主要分為四種,分別是基本選擇器,層次選擇器,過濾選擇器,和表單選擇器,其中當屬基本選擇器用途最廣泛。 1.基本選擇器 類似於getElemenById(“”)<=>$("") 常用的有$("*"),$("#id"),$(".class"),$("p ...
  • 前言: 本人安裝nginx-echo-module的初衷是之前遇到過一些時候,雖然有配置location規則,但是卻在瀏覽器訪問時,出現錯誤等未匹配或不符合預期的情況,想要知道,實際上是否有匹配哪條location規則,但是nginx的日誌卻只能記錄請求url,所以,看到echo輸出就很開心,畢竟感 ...
  • 從零開始,用最少的配置、最少的代碼、最少的依賴來搭建一個最簡單的webpack+react環境 ...
  • 首先引入<canvas></canvas>標簽就不必說了。 其次就是得到canvas的2d環境了( var ctx = canvasDom.getContent('2d') )。 現在呢,你可能想畫點什麼東西。畫東西之前你要確定好一些東西,比如: ctx.fillStyle 這是一個用來確定填充顏色 ...
  • 微信小程式開發平臺剛剛開放了一個全新的功能:雲開發。 簡單地說就是將開發人員搭建微信小程式後端的成本再次降低,此文剛好在此產品公測時,來快速上手看看都有哪些方便開發者的功能更新。 ...
  • ...
  • function checkPhone() { var reg1 =/^(((13[0-9]{1})|(15[0-9]{1})|(18[0-9]{1}))+\d{8})$/; var phone = document.getElementById("phone").value; if (phone= ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...