冒泡排序(C語言詳解)

原理:從左到右一次比較,如果左側數字比右側數字大(小),則兩數交換,否則比較下一? ? ? ? ? ? ?組數字,每一次大循環比較可以將亂序的最右側數字改為最大(最小),每一次小循環的比? ? ? ? ? ? ?較次數相對于前一次要減一


動態用例:

升序排序代碼詳解:

void bubble_sort (int arr[],int sz)   //將數組和元素個數傳過來
{for(int i=0;i<sz-1;i++)   //每次大循環可以確定亂序最后一個數字,最多需要sz-1次循環{int tmp=0;for(int j=0;j<sz-1-i;j++)//每次小循環,因為已經確定最后的i個元素,剩下需要比較的元素個數就為sz-i,而需要比較的次數就為sz-1-i{if(arr[j]>arr[j+1])//相鄰兩個數比較,如過前一個數比后一個數大就交換{
int t=arr[j];
arr[j]=arr[j+1];
arr[j+1]=t;
tmp=1;}}
if(tmp==0)
break;}
}

降序排序代碼詳解:

void bubble_sort (int arr[],int sz)   //將數組和元素個數傳過來
{for(int i=0;i<sz-1;i++)   //每次大循環可以確定亂序最后一個數字,最多需要sz-1次循環{int tmp=0;for(int j=0;j<sz-1-i;j++)//每次小循環,因為已經確定最后的i個元素,剩下需要比較的元素個數就為sz-i,而需要比較的次數就為sz-1-i{if(arr[j]<arr[j+1])//相鄰兩個數比較,如過前一個數比后一個數小就交換{
int t=arr[j];
arr[j]=arr[j+1];
arr[j+1]=t;
tmp=1;}}
if(tmp==0)
break;}
}

兩者排序方式唯一的區別:

1.升序排序:如果前一個數比后一個數大,二者就交換,所以用>

2.降序排序:如果前一個數比后一個數大,二者就交換,所以用<

tmp的作用:

每一次大循環,我們都將tmp設置為0,在每一次小循環里面,如果兩個數進行了交換,我們就將tmp改為1,出這次大循環判斷一下tmp是否為0,如果為0,那么本次循環沒有進行交換,也就是數組已經排好序,直接退出大循環,否則繼續進行循環。

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

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

相關文章

機房運維管理的全面優化:動環監控與IT基礎設施的深度融合

隨著信息技術的飛速發展&#xff0c;機房作為支撐企業信息化建設的核心樞紐&#xff0c;其運維管理的重要性日益凸顯。機房不僅要確保IT基礎設施的高可用性&#xff0c;還需應對日益復雜的安全挑戰和不斷變化的業務需求。因此&#xff0c;構建一個集動環監控、工單管理、資產管…

MySQL運維實戰之備份和恢復(8.2)xtrabackup備份到云端(OSS)

作者&#xff1a;俊達 xtrabackup工具中有一個xbcloud程序&#xff0c;可以將數據庫直接備份到S3對象存儲中&#xff0c;本地不落盤。這里介紹將數據庫直接備份到OSS的一種方法。 具體方法如下&#xff1a; 1、準備OSS 我們使用ossutil工具上傳備份文件。 下載ossutil工具&…

jupyter 一鍵快捷啟動方法研究

1.效果 首先打開dat 文件&#xff0c;同意賦予管理員 輸入序號1 成功啟動 2.Bat代碼 %1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&e…

mac報錯:zsh: command not found: npm

1、問題概述&#xff1f; 在mac系統中使用npm命令的時候&#xff0c;mac os報錯提示&#xff1a; zsh: command not found: npm 一般出現發這種情況的原因時沒有安裝npm,而npm這命令時集成在nodejs中的&#xff0c;所以安裝nodejs就可以了。 2、解決辦法 本質就是需要安裝…

Spring:FactoryBean預加載邏輯以及自定義實現Mybatis的接口掃描

Spring&#xff1a;FactoryBean預加載邏輯以及自定義實現Mybatis的接口掃描 1 前言 參考Mybatis框架的Mapper注解掃描Mapper接口的業務邏輯&#xff0c;其中集成Spring的邏輯里使用到了Spring框架的FactoryBean拓展點&#xff0c;本文針對Spring FactoryBean的加載流程進行分…

leetcode10正則表達式匹配

leetcode10正則表達式匹配 思路python 思路 難點1 如何理解特殊字符 ’ * ’ 的作用&#xff1f; 如何正確的利用特殊字符 ’ . ’ 和 ’ * ’ &#xff1f; * 匹配零個或多個前面的那一個元素 "a*" 可表示的字符為不同數目的 a&#xff0c;包括&#xff1a; "…

【大廠AI課學習筆記NO.65】機器學習框架和深度學習框架

筆記思維腦圖已上傳&#xff0c;訪問我的主頁可下載。 https://download.csdn.net/download/giszz/88868909 廣義上&#xff0c;機器學習框架包含了深度學習框架。 本質上&#xff0c;機器學習框架涵蓋分類、回歸、聚類、異常檢測和數據準備等各種學習方法。 深度學習框架涵…

Android PMS——權限控制分析(十二)

PMS 中的權限控制通過權限管理和權限請求兩個方面來實現。應用在 Android 系統中需要聲明和請求權限,PMS 則會根據應用聲明的權限和用戶的選擇來進行權限的管理和控制。 一、主要函數 1、Settings 源碼位置:/frameworks/base/services/core/java/com/android/server/pm/Se…

SpringBoot啟動擴展應用:干預優化+加快啟動時間

一、SpringBoot啟動配置原理簡述 本內容直接查看分析SpringBoot啟動配置原理&#xff0c;傳送門&#xff1a; 二、SpringBoot啟動過程干預 Spring Boot啟動過程中我們可以實現以下干預工作&#xff1a; 修改Spring Boot默認的配置屬性。使用ConfigurationProperties和Enable…

python celery beat實現定時任務

在Celery在python中的應用除了實現異步任務&#xff08;async task)外也可以執行定時任務(beat) 1.Celery定時任務是什么&#xff1f; Celery默認任務單元由任務生產者觸發,但有時可能需要其自動觸發, 而beat進程正是負責此類任務,能夠自動觸發定時/周期性任務. 只需要在配置…

吳恩達deeplearning.ai:學習曲線決定下一步怎么做

以下內容有任何不理解可以翻看我之前的博客哦&#xff1a;吳恩達deeplearning.ai專欄 學習曲線是一種圖形表示方法&#xff0c;用于展示模型在訓練過程中的學習表現&#xff0c;即模型的訓練集和驗證集上的性能如何隨著訓練時間的增加而變化。可以幫助我們了解模型的學習進度。…

Orbit 使用指南 01| 創建空白場景 | Isaac Sim | Omniverse

如是我聞&#xff1a; 在使用指南01中 演示如何使用獨立的Python腳本啟動和控制Isaac Sim模擬器。介紹Orbit框架中兩個最常用的類app.AppLauncher和sim.SimulationContext。實踐在Oribit中設置一個空場景 代碼 本指南對應于orbit/source/standalone/tutorials/00_sim目錄中的…

制作耳機殼的UV樹脂和塑料材質哪一個成本更高一些?

總體來說&#xff0c;制作耳機殼的UV樹脂的成本可能會略高于塑料材質。 原材料成本&#xff1a;UV樹脂通常是通過復雜的合成過程制成的。這些過程不僅需要大量的能源投入&#xff0c;還需要較高水平的技術和設備支持&#xff0c;因此原材料成本較高。相比之下&#xff0c;塑料…

04-prometheus服務的動態發現

一、概述 目前&#xff0c;我們每增加一個被監控的節點&#xff0c;就需要修改prometheus的配置文件&#xff0c;然后重新加載prometheus服務&#xff0c;這種方式比較繁瑣&#xff0c;每次新增、刪除被監控節點都需要重新操作一遍&#xff0c;不適合生產環境的大規模監控架構&…

Go-zero中分布式事務的實現(DTM分布式事務管理器,在一個APi中如何調用兩個不同服務的rpc層,并保證兩個不同服務之間的業務邏輯同時成功)

涉及到的相關技術 1.DTM分布式事務管理器,解決跨數據庫、跨服務、跨語言棧更新數據的一致性問題。 2.SAGA事務模式,SAGA事務模式是DTM中常用的一種模式,簡單易上手.(當然還有其它更多的事務模式,這里采用的SAGA只不過是其中一種較為簡單的方法) 3.Go-zero框架,ETCD服務注冊... …

Windows 2012 設置 nginx 開機自啟動(適用于windows2012/10)

Windows 2012 設置 nginx 開機自啟動&#xff08;適用于windows2012/10&#xff09;https://www.cnblogs.com/xuegqcto/articles/7521483.html 在windows server 2012上安裝nginx&#xff0c;同時配置開機自啟動服務&#xff08;推薦使用“Windows Service Wrapper”工具&…

leetcode 740.刪除并活得點數

這道題和打家劫舍得思路很像。 思路&#xff1a;首先我們看到題目的意思&#xff0c;就是說我們如果選擇了一個數&#xff0c;那么它相鄰的數就會不得選入&#xff0c;也就是刪除。這就是上一個題那個相鄰的家不能偷的問題唄&#xff01; 我們從那個地方轉換一下&#xff0c;…

【Linux】線程概念|線程理解|線程控制

文章目錄 線程概念Linux中線程是否存在的討論線程創建和線程控制線程的終止和等待&#xff08;三種終止方式 pthread_join()的void**retval&#xff09; 線程概念 線程就是進程內部的一個執行流&#xff0c;線程在進程內運行&#xff0c;線程在進程的地址空間內運行&#xff0…

LeetCode-第14題-最長公共前綴

1.題目描述 編寫一個函數來查找字符串數組中的最長公共前綴。 如果不存在公共前綴&#xff0c;返回空字符串 ""。 2.樣例描述 3.思路描述 按字符串數組每個數組的長度&#xff0c;將字符串數組從小到大排序&#xff1b;他們的公共前綴一定小于或等于最長元素長度…

(Aliyun AI ACP 06)視覺智能基礎知識:視覺智能常用模型與算法

文章目錄 阿里云人工智能工程師ACP認證考試知識點輔助閱讀&#xff08;Aliyun AI ACP 06&#xff09;視覺智能基礎知識&#xff1a;視覺智能常用模型與算法視覺智能建模流程圖像預處理技術圖像特征提取算法深度學習模型 阿里云人工智能工程師ACP認證考試知識點輔助閱讀 &#…