【算法集訓】基礎算法:基礎排序 - 冒泡排序

一、基本理解

貼上圖解,更容易理解代碼:https://visualgo.net/zh/sorting
冒泡排序(Bubble Sort)又稱為泡式排序,是一種簡單的排序算法。

核心思想:
它重復地走訪過要排序的數列,一次比較兩個元素,如果它們的順序錯誤就把它們交換過來。走訪數列的工作是重復地進行直到沒有再需要交換,也就是說該數列已經排序完成。

這個算法的名字由來是因為越小的元素會經由交換慢慢“浮”到數列的頂端(升序或降序排列),就像水中的氣泡會冒起來一樣。

二、題目練習

1046. 最后一塊石頭的重量

// 冒泡排序
void BubbleSort(int * n, int size) {// 從右往左先從最大的開始確定,所以從最后一個開始for(int i = size - 1; i > 0; --i) {for(int j = 0; j < i; ++j) {if(n[j] > n[j + 1]) {int tmp = n[j];n[j] = n[j + 1];n[j + 1] = tmp;}}}
}int lastStoneWeight(int* stones, int stonesSize) {while(stonesSize > 1) {BubbleSort(stones, stonesSize);int x = stones[stonesSize - 1];int y = stones[stonesSize - 2];// 題目給的兩種粉碎條件if(x == y) {stonesSize -= 2;}else {int z = x - y;stones[stonesSize - 2] = z;stonesSize -= 1;}}// 是否存在石頭return stonesSize == 0 ? 0 : stones[0];
}

2148. 元素計數

void BubbleSort(int * n, int size) {for(int i = size - 1; i > 0; --i) {for(int j = 0; j < i; ++j) {if(n[j] > n[j + 1]) {int tmp = n[j];n[j] = n[j + 1];n[j + 1] = tmp;}}}
}int countElements(int* nums, int numsSize) {BubbleSort(nums, numsSize);int ans = 0;for(int i = 1; i < numsSize - 1; ++i) {if(nums[i] == nums[0] || nums[i] == nums[numsSize - 1]) {continue;}ans ++;}return ans;
}

88. 合并兩個有序數組

void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n) {for(int i = 0; i < n; ++i) {nums1[m + i] = nums2[i];}for(int i = 0; i < nums1Size - 1; ++i) {for(int j = 0; j < nums1Size - 1 - i; ++j) {if(nums1[j] > nums1[j + 1]) {int t = nums1[j];nums1[j] = nums1[j + 1];nums1[j + 1] = t;}}}
}

1464. 數組中兩元素的最大乘積

int maxProduct(int* nums, int numsSize) {for(int i = 0; i < numsSize - 1; ++i) {for(int j = 0; j < numsSize - 1 - i; ++j) {if(nums[j] > nums[j + 1]) {int temp = nums[j];nums[j] = nums[j + 1];nums[j + 1] = temp;}}}return (nums[numsSize - 1] - 1) * (nums[numsSize - 2] - 1);
}

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

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

相關文章

性能比較:in和exists

當在Hive SQL中使用NOT IN和NOT EXISTS時&#xff0c;性能差異主要取決于底層數據的組織方式、數據量大小、索引的使用情況以及具體查詢的復雜程度。下面是對這兩種方法的性能分析&#xff1a; 1. NOT IN&#xff1a;- 工作原理&#xff1a;NOT IN子查詢會逐個比較主查詢中的值…

化肥工業5G智能制造工廠數字孿生可視化平臺,推進化肥行業數字化轉型

化肥工業5G智能制造工廠數字孿生可視化平臺&#xff0c;推進化肥行業數字化轉型。隨著科技的不斷發展&#xff0c;數字化轉型已經成為各行各業發展的必然趨勢。在化肥工業領域&#xff0c;5G智能制造工廠數字孿生可視化平臺的應用正在逐漸普及&#xff0c;為行業數字化轉型提供…

Java 循環結構 - while ,do…while 及 for,

目錄 Java中有三種主要的循環結構&#xff1a; while 循環 實例 do…while 循環 實例 for循環 實例 三種循環之間的區別 增強 for 循環 實例 break 關鍵字 語法 實例 continue 關鍵字 語法 實例 順序結構的程序語句只能被執行一次。 如果您想要同樣的操作執行…

租用云服務器租時要注意的問題有哪些?

隨著云計算的不斷發展&#xff0c;對云計算服務器的需求也越來越大。 那么&#xff0c;我們應該如何以正確的態度和方法來選擇云服務器呢&#xff1f; 租用云服務器需要注意哪些問題&#xff1f; 1.了解您需要的云服務類型 了解您的云計算需求將使您了解您正在尋求的服務類型…

web運行時安全

1.輸入驗證 對傳遞的數據的格式、長度、類型&#xff08;前端和后端都要&#xff09;進行校驗。 對黑白名單校驗&#xff1a;比如前端傳遞了一個用戶名&#xff0c;可以搜索該用戶是否在白名單或者黑名單列表。 針對黑名單校驗&#xff0c;比如&#xff1a; // 手機號驗證…

讓兩個電腦通信的方法(TCP連接,UDP連接,C/S架構)

目錄 TCP-面向連接UDP-面向無連接C/S架構服務器和客戶端的工作過程C/S架構例子 讓兩個電腦通信的方法是 在C/S的基礎上&#xff0c;采用TCP和UDP的方式連接 TCP-面向連接 UDP-面向無連接 C/S架構 服務器和客戶端的工作過程 C/S架構例子 服務器與客戶端通信的過程類似公司與客戶…

微信小程序云開發教程——墨刀原型工具入門(添加交互事件)

引言 作為一個小白&#xff0c;小北要怎么在短時間內快速學會微信小程序原型設計&#xff1f; “時間緊&#xff0c;任務重”&#xff0c;這意味著學習時必須把握微信小程序原型設計中的重點、難點&#xff0c;而非面面俱到。 要在短時間內理解、掌握一個工具的使用&#xf…

殿堂級Flink源碼極精課程預售

一、為什么我們要讀源碼? 1、讓個人技術快速成長: 優秀的開源框架,底層的源碼設計思想也非常優秀,同時還有含有大量的設計模式和并發編程技術&#xff0c;優秀的解決方案,熟讀源碼對猿們技術提升有很大幫助 2、新技術學習能力: Java開源碼框架的源碼熟讀后&#xff0c;若出現…

第一篇:參考資料地址

javaGuide JavaGuide&#xff08;Java學習&面試指南&#xff09; | JavaGuide 清華學生總結的 小林coding labuladong labuladong 的算法筆記 | labuladong 的算法筆記 【華仔說技術】kafka的系列文章 https://mp.weixin.qq.com/mp/appmsgalbum?__bizMzg3MTcxMDgxNA…

【Datawhale組隊學習:Sora原理與技術實戰】Sora技術原理

Sora能力邊界探索 最大支持60秒高清視頻生成&#xff0c;以及基于已有短視頻的前后擴展&#xff0c;同時保持人物/場景的高度一致性如奶茶般絲滑過渡的視頻融合能力同一場景的多角度/鏡頭的生成能力具有動態攝像機運動的視頻。隨著攝像機的移動和旋轉&#xff0c;人和其 他場景…

x-pack的破解方式和免費jar包!!可直接用!!

原理介紹 我們平時為es安裝x-pack組件&#xff0c;用elasticsearch-plugin install x-pack &#xff0c;安裝成功后。 1.cd $es目錄/pulgins/x-pack 里面有一個x-pack-5.6.2.jar &#xff0c;將jar包反編譯&#xff0c;然后將里面的licence的程序改下。再編譯成jar包。 2…

通過筆記本橋接打印機組成網絡打印機其它電腦與之相連各種問題匯總

根據描述需要一臺低配閑置筆記本&#xff08;有無線網卡&#xff09;&#xff0c;一臺普通臺式打印機&#xff08;不帶WIFI&#xff09;就可以組成網絡打印機&#xff0c;能省1000塊不&#xff1f; 1. 讓筆記本安裝驅動使其可以打印。 2. 讓筆記本上的打印機共享&#xff0c;…

解決 MacOS Sonoma 14 系統下修改用戶名無法進入系統的歷史Bug

蘋果系統祖傳Bug概述 在MacOS中如果在系統偏好設置/用戶和群組中嘗試修改用戶名或用戶ID&#xff0c;當且僅當只有一個管理員賬號的時候重啟&#xff0c;就可能面臨到無法進入操作系統&#xff0c;即使出現了登錄框&#xff0c;但是一直是 loading狀態在這個期間&#xff0c;你…

javaScript 深淺拷貝

javaScript深淺拷貝 淺拷貝 自己創建一個新的對象&#xff0c;來接受你要重新復制或引用的對象值。如果對象屬性是基本的數據類型&#xff0c;復制的就是基本類型的值給新對象&#xff0c;但如果屬性是引用數據類型&#xff0c;復制的就是內存中的地址&#xff0c;如果其中一個…

Python 編程中的迭代器、生成器和裝飾器探究【第110篇—迭代器】

Python 編程中的迭代器、生成器和裝飾器探究 在Python編程中&#xff0c;迭代器&#xff08;Iterators&#xff09;、生成器&#xff08;Generators&#xff09;和裝飾器&#xff08;Decorators&#xff09;是三個強大的概念&#xff0c;它們為代碼的可讀性、效率和靈活性提供…

PaddleOCR的部署教程(實操環境安裝、數據集制作、實際應用案例)

文章目錄 前言 PaddleOCR簡介 一、PaddleOCR環境搭建 因為我之前安裝過cuda和cudnn&#xff0c;查看cuda的版本根據你版本安裝合適的paddlepaddle版本&#xff08;之前沒有安裝過cuda的可以看我這篇文章Ubuntu20.04配置深度學習環境yolov5最簡流程&#xff09; 1.創建一個…

【C++從0到王者】第四十八站:最短路徑

文章目錄 一、最短路徑二、單源最短路徑 -- Dijkstra算法1.單源最短路徑問題2.算法思想3.代碼實現4.負權值帶來的問題 三、單源最短路徑 -- Bellman-Ford算法1.算法思想2.算法實現3.SPFA優化4.負權回路 四、多源最短路徑 -- Floyd-Warshall算法1.算法思想2.算法實現 一、最短路…

antd vue 日期控件的使用(選年份)

Ant Design Vue-------DatePicker 今天就講講Ant Design Vue下的控件----DatePicker 日期選擇框 結合項目中的需求&#xff0c;先講一下選擇年份如何使用&#xff0c;需求&#xff1a; &#xff08;1&#xff09;將庫中存的年份讀出到DatePicker控件里面&#xff1b; &…

Windows 10上安裝Docker

在Windows 10上安裝Docker需要使用Docker Desktop for Windows&#xff0c;這是一個完全包含Docker工具和Docker Engine的應用程序&#xff0c;讓你可以在Windows環境中運行容器化應用程序。以下是安裝Docker Desktop for Windows的步驟&#xff1a; 系統要求檢查&#xff1a; …

推薦收藏!字節AI Lab-NLP算法(含大模型)面經總結!

節前&#xff0c;我們組織了一場算法崗技術&面試討論會&#xff0c;邀請了一些互聯網大廠同學、參加社招和校招面試的同學&#xff0c;針對大模型技術趨勢、大模型落地項目經驗分享、新手如何入門算法崗、該如何備戰、面試常考點分享等熱門話題進行了深入的討論。 今天整理…