排序算法-冒泡排序(C語言實現)

簡介😀

冒泡排序是一種簡單但效率較低的排序算法。它重復地掃描待排序元素列表,比較相鄰的兩個元素,并將順序錯誤的元素交換位置,直到整個列表排序完成。

實現🧐

  • 以下內容為本人原創,經過自己整理得出,有問題歡迎評論區留言,引用請標明出處,謝謝!🫡

冒泡排序

/*** @author bhlu* @date 2023-08-16* * @brief 冒泡排序* * @param[in] data 數字數組* @param[in] size 數組長度* * @return 無
*/
void bubble_sort(int data[], int size)
{// 按照上圖的方法,遍歷size-1次for(int i = 0; i < size - 1; i++){// 標記: 用于判斷這次遍歷是否了數據,0->修改,1->未修改int flag = 1;// 每輪判斷的次數,按上圖的方法,第一輪是size-1,然后每次都會少一次,可以使用size-1-ifor(int j = 0; j < size - 1 - i; j++){// 將索引指向的數據與索引下一個數據進行比較,大于就換位置if(data[j] > data[j+1]){int swap = data[j];data[j] = data[j+1];data[j+1] = swap;flag = 0;  // 改變標記}}if(flag)// 如果還是1,說明已經排好了,就breakbreak;}
}

完整代碼🫠

  • sort.c
#include "sort.h"/*** @author bhlu* @date 2023-08-16* * @brief 冒泡排序* * @param[in] data 數字數組* @param[in] size 數組長度* * @return 無
*/
void bubble_sort(int data[], int size)
{// 按照上圖的方法,遍歷size-1次for(int i = 0; i < size - 1; i++){// 標記: 用于判斷這次遍歷是否了數據,0->修改,1->未修改int flag = 1;// 每輪判斷的次數,按上圖的方法,第一輪是size-1,然后每次都會少一次,可以使用size-1-ifor(int j = 0; j < size - 1 - i; j++){// 將索引指向的數據與索引下一個數據進行比較,大于就換位置if(data[j] > data[j+1]){int swap = data[j];data[j] = data[j+1];data[j+1] = swap;flag = 0;  // 改變標記}}if(flag)// 如果還是1,說明已經排好了,就breakbreak;}
}
  • sort.h
#ifndef __SORT_H
#define __SORT_H#include <stdio.h>extern void bubble_sort(int data[], int size);#endif
  • main.c
#include "sort.h"int main(void)
{int data[] = {10, 5, 2, 3, 4, 7, 6};int size = sizeof(data) / sizeof(data[0]);printf("排序前: ");for (int i = 0; i < size; i++)printf("%d ", data[i]);printf("\n");bubble_sort(data, size);printf("排序后: ");for (int i = 0; i < size; i++)printf("%d ", data[i]);printf("\n");return 0;
}

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

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

相關文章

WAVE SUMMIT2023六大分會場同步開啟,飛槳+文心大模型加速區域產業智能化!

由深度學習技術及應用國家工程研究中心主辦、百度飛槳和文心大模型承辦的WAVE SUMMIT深度學習開發者大會2023將于8月16日重磅來襲&#xff01;屆時上海、廣州、深圳、成都、南昌和寧波六大分會場將同步開啟&#xff01; 分會匯聚區域產業大咖、科研機構專家、知名學者和技術大…

【C++ 學習 ?】- 詳解 list 容器

目錄 一、list 容器的基本介紹 二、list 容器的成員函數 2.1 - 迭代器 2.2 - 修改操作 三、list 的模擬實現 3.1 - list.h 3.2 - 詳解 list 容器的迭代器 3.2 - test.cpp 一、list 容器的基本介紹 list 容器以類模板 list<T>&#xff08;T 為存儲元素的類型&…

【第二階段】kotlin函數引用

針對上篇傳入函數參數我們也可以重新定義一個函數&#xff0c;然后在main中調用時傳入函數對象 lambda屬于函數類型的對象&#xff0c;需要把普通函數變成函數類型的對象&#xff08;函數引用&#xff09;&#xff0c;使用“&#xff1a;&#xff1a;” /*** You can edit, ru…

DRF 緩存

應用環境 django4.2.3 &#xff0c;python3.10 由于對于服務而言&#xff0c;有些數據查詢起來比較費時&#xff0c;所以&#xff0c;對于有些數據&#xff0c;我們需要將其緩存。 最近做了一個服務&#xff0c;用的時 DRF 的架構&#xff0c;剛好涉及緩存&#xff0c;特此記…

webSocket 筆記

1 認識webSocket WebSocket_ohana&#xff01;的博客-CSDN博客 一&#xff0c;什么是websocket WebSocket是HTML5下一種新的協議&#xff08;websocket協議本質上是一個基于tcp的協議&#xff09;它實現了瀏覽器與服務器全雙工通信&#xff0c;能更好的節省服務器資源和帶寬…

centos 7.9 部署django項目

1、部署框架 主要組件&#xff1a;nginx、uwsgi、django項目 訪問頁面流程&#xff1a;nginx---》uwsgi---》django---》uwsgi---》nginx 2、部署過程 操作系統&#xff1a;centos 7.9 配置信息&#xff1a;4核4G 50G 內網 eip &#xff1a;10.241.103.216 部署過程&…

深入學習SpringCloud Alibaba微服務架構,揭秘Nacos、Sentinel、Seata等核心技術,助力構建高效系統!

課程鏈接&#xff1a; 鏈接: https://pan.baidu.com/s/1hRN0R8VFcwjyCTWCEsz-8Q?pwdj6ej 提取碼: j6ej 復制這段內容后打開百度網盤手機App&#xff0c;操作更方便哦 --來自百度網盤超級會員v4的分享 課程介紹&#xff1a; &#x1f4da;【第01階段】課程簡介&#xff1a;全…

Android FrameWork 層 Handler源碼解析

Handler生產者-消費者模型 在android開發中&#xff0c;經常會在子線程中進行一些耗時操作&#xff0c;當操作完畢后會通過handler發送一些數據給主線程&#xff0c;通知主線程做相應的操作。 其中&#xff1a;子線程、handler、主線程&#xff0c;其實構成了線程模型中經典的…

STM32存儲左右互搏 I2C總線FATS讀寫EEPROM ZD24C1MA

STM32存儲左右互搏 I2C總線FATS讀寫EEPROM ZD24C1MA 在較低容量存儲領域&#xff0c;EEPROM是常用的存儲介質&#xff0c;可以通過直接或者文件操作方式進行讀寫。不同容量的EEPROM的地址對應位數不同&#xff0c;在發送字節的格式上有所區別。EEPROM是非快速訪問存儲&#xf…

vue2+Spring Boot2.7 大文件分片上傳

之前我們文章 手把手帶大家實現 vue2Spring Boot2.7 文件上傳功能 將了上傳文件 但如果文件很大 就不太好處理了 按正常情況甚至因為超量而報錯 這里 我弄了個足夠大的文件 我們先搭建 Spring Boot2.7 環境 首先 application.yml 代碼編寫如下 server:port: 80 upload:path:…

【佳佳怪文獻分享】使用點云從半監督到全監督房間布局估計

標題&#xff1a;From Semi-supervised to Omni-supervised Room Layout Estimation Using Point Cloud 作者&#xff1a;Huan-ang Gao, Beiwen Tian, Pengfei Li, Xiaoxue Chen, Hao Zhao, Guyue Zhou , Yurong Chen and Hongbin Zha 來源&#xff1a;2023 IEEE Internation…

根據源碼,模擬實現 RabbitMQ - 通過 SQLite + MyBatis 設計數據庫(2)

目錄 一、數據庫設計 1.1、數據庫選擇 1.2、環境配置 1.3、建庫建表接口實現 1.4、封裝數據庫操作 1.5、針對 DataBaseManager 進行單元測試 一、數據庫設計 1.1、數據庫選擇 MySQL 是我們最熟悉的數據庫&#xff0c;但是這里我們選擇使用 SQLite&#xff0c;原因如下&am…

手機出現 不讀卡 / 無信號時應該怎么辦?

當手機屏幕亮起&#xff0c;一般在屏幕最上方都會有代表手機卡狀態的顯示&#xff0c;其中網絡信號和讀卡狀態的標識&#xff0c;依舊有很多人分不太清&#xff0c;更不清楚改怎么辦了。 1、當我們的手機里有兩張卡時&#xff0c;則會有兩個信號顯示 2、信號狀態一般是由短到…

CSS自己實現一個步驟條

前言 步驟條是一種用于引導用戶按照特定流程完成任務的導航條&#xff0c;在各種分步表單交互場景中廣泛應用。例如&#xff1a;在HIS系統-門診醫生站中的接診場景中&#xff0c;我們就可以使用步驟條來實現。她的執行步驟分別是&#xff1a;門診病歷>遺囑錄入>完成接診…

ArcGIS Pro基礎入門、制圖、空間分析、影像分析、三維建模、空間統計分析與建模、python融合、案例全流程科研能力提升

目錄 第一章 入門篇 GIS理論及ArcGIS Pro基礎 第二章 基礎篇 ArcGIS數據管理與轉換 第三章 數據編輯與查詢、拓撲檢查 第四章 制圖篇 地圖符號與版面設計 第五章 空間分析篇 ArcGIS矢量空間分析及應用 第六章 ArcGIS柵格空間分析及應用 第七章 影像篇 遙感影像處理 第八…

Python random模塊用法整理

隨機數在計算機科學領域扮演著重要的角色&#xff0c;用于模擬真實世界的隨機性、數據生成、密碼學等多個領域。Python 中的 random 模塊提供了豐富的隨機數生成功能&#xff0c;本文整理了 random 模塊的使用。 文章目錄 Python random 模塊注意事項Python random 模塊的內置…

大語言模型控制生成的過程Trick:自定義LogitsProcessor實踐

前言 在大模型的生成過程中&#xff0c;部分原生的大語言模型未經過特殊的對齊訓練&#xff0c;往往會“胡說八道”的生成一些敏感詞語等用戶不想生成的詞語&#xff0c;最簡單粗暴的方式就是在大模型生成的文本之后&#xff0c;添加敏感詞庫等規則手段進行敏感詞過濾&#xf…

30行JS代碼帶你手寫自動回復語音聊天機器人

&#x1f942;(???)您的點贊&#x1f44d;?評論&#x1f4dd;?收藏?是作者創作的最大動力&#x1f91e; 前言 現如今生活中到處都是聊天機器人的身影&#xff0c;聊天機器人不僅僅能減少人工的聊天壓力&#xff0c;而且十分的可愛有趣&#xff0c;安卓系統的小AI&#xf…

Springboot整合Mybatis調用Oracle存儲過程

1、配置說明 Oracel11g+springboot2.7.14+mybatis3.5.13 目標:springboot整合mybatis訪問oracle中的存儲過程,存儲過程返回游標信息。 mybatis調用oracle中的存儲過程方式 2、工程結構 3、具體實現 3.1、在Oracle中創建測試數據庫表 具體數據可自行添加 create table s…

Lodash——使用與實例

1. 簡介 Lodash是一個一致性、模塊化、高性能的JavaScript實用庫。Lodash通過降低array、number、objects、string等等的使用難度從而讓JavaScript變得簡單。Lodash的模塊方法&#xff0c;非常適用于&#xff1a; 遍歷array、object 和 string對值進行操作和檢測創建符合功能的…