欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語言詳解冒泡排序實現(xiàn)

 更新時間:2022年04月14日 15:27:13   作者:ChaoFreeandeasy_  
冒泡排序是一種簡單的排序算法,它也是一種穩(wěn)定排序算法。其實現(xiàn)原理是重復掃描待排序序列,并比較每一對相鄰的元素,當該對元素順序不正確時進行交換。一直重復這個過程,直到?jīng)]有任何兩個相鄰元素可以交換,就表明完成了排序

前言

在排序中,有各種各樣的排序方式,今天我們將要來介紹《冒泡排序》。今天會從冒泡排序的具體意義和他的操作來展開。

一、冒泡排序是什么

從左到右,相鄰元素進行比較。每次比較一輪,就會找到序列中最大的一個或最小的一個。這個數(shù)就會從序列的最右邊冒出來。

以從小到大排序為例,第一輪比較后,所有數(shù)中最大的那個數(shù)就會浮到最右邊;第二輪比較后,所有數(shù)中第二大的那個數(shù)就會浮到倒數(shù)第二個位置……就這樣一輪一輪地比較,最后實現(xiàn)從小到大排序。

二、具體步驟

1.代碼解釋

代碼如下(示例):

#include<stdio.h>
 
void bubble(int arr[], int sz)
{
	for (int j = 0; j < sz - 1; j++)           //一趟排n-1次(n為n個數(shù))
									           //n個數(shù)的話,就要走n-1趟(每一趟排完以后,都 
                                               //要減去最后一個排好的數(shù))
	{
		int flag = 0;
		for (int i = 0; i < sz-1-j; i++)
		{
			if (arr[i] <arr[i + 1])
			{
				int temp = arr[i];
				arr[i] = arr[i + 1];
				arr[i + 1] = temp;
				flag = 1;
			}
		}
		if (flag == 0)
		{
			break;
		}
	}
}
int main()
{
	int arr[] = { 要排序的元素 };
 
	int sz = sizeof(arr) / sizeof(arr[0]);  // sz為數(shù)組元素個數(shù)。
 
	bubble(arr,sz);
 
	for (int i = 0; i < sz; i++)
	{
		printf("%d ", arr[i]);
	}
}

 舉例詳細說明:

同理可得,每一趟以后減去一個元素,則每趟需要減去一次次數(shù)。

所以for循環(huán)中,需要i<sz-1-j.

 當遇到規(guī)范的數(shù)組元素時(不需要排序),int flag =0初始為零,若需要排序,則進入 if (arr[i] <arr[i + 1])循環(huán)中,則flag變?yōu)?;若一趟過完之后,發(fā)現(xiàn)并未交換元素,則flag=0未變,直接跳出循環(huán),減少了時間復雜度。

2.讀入數(shù)據(jù)

代碼如下(示例)

#include<stdio.h>
 
void bubble(int arr[], int sz)
{
	for (int j = 0; j < sz - 1; j++)           //一趟排n-1次(n為n個數(shù))
									           //n個數(shù)的話,就要走n-1趟(每一趟排完以后,都 
                                               //要減去最后一個排好的數(shù))
	{
		int flag = 0;
		for (int i = 0; i < sz-1-j; i++)
		{
			if (arr[i] <arr[i + 1])
			{
				int temp = arr[i];
				arr[i] = arr[i + 1];
				arr[i + 1] = temp;
				flag = 1;
			}
		}
		if (flag == 0)
		{
			break;
		}
	}
}
int main()
{
	int arr[] = { 1,3,54,76,7,5,45,9 };
 
	int sz = sizeof(arr) / sizeof(arr[0]);
 
	bubble(arr,sz);
 
	for (int i = 0; i < sz; i++)
	{
		printf("%d ", arr[i]);
	}
}

那么可以看出,輸出的結果就是 

76,54,45,9,7,5,3,1

總結

這里對文章進行總結:

從大到小,和從小打大至于要改變if (arr[i] <arr[i + 1])中符號即可。

注意:在調(diào)用函數(shù)時,在函數(shù)內(nèi)部無法算出sz,即數(shù)組的元素個數(shù),所以需在主函數(shù)中算出后,再傳入函數(shù)形參中??!

到此這篇關于C語言詳解冒泡排序實現(xiàn)思路的文章就介紹到這了,更多相關C語言 冒泡排序內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • C語言判斷大小端的兩種方法

    C語言判斷大小端的兩種方法

    大小端的問題在很多面試筆試中都會遇到,本文主要介紹了C語言判斷大小端的兩種方法,文中通過示例代碼介紹的非常詳細,需要的朋友們下面隨著小編來一起學習學習吧
    2024-02-02
  • QT樹的具體項目實現(xiàn)

    QT樹的具體項目實現(xiàn)

    本文主要介紹了QT樹的具體項目實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-06-06
  • 一文詳解C++中運算符的使用

    一文詳解C++中運算符的使用

    這篇文章主要為大家詳細介紹了C++中運算符的使用方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-05-05
  • C++超詳細講解標準庫

    C++超詳細講解標準庫

    C++強大的功能來源于其豐富的類庫及庫函數(shù)資源。C++標準庫(C++ Standard Library, 亦可稱作,C++標準程序庫)的內(nèi)容總共在50個標準頭文件中定義。在C++開發(fā)中,要盡可能地利用標準庫完成
    2022-06-06
  • C++超集C++/CLI模塊的基本語法

    C++超集C++/CLI模塊的基本語法

    這篇文章介紹了C++超集C++/CLI模塊的基本語法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07
  • 關于C++使用指針 堆和棧的區(qū)別分析

    關于C++使用指針 堆和棧的區(qū)別分析

    本篇文章小編為大家介紹,關于C++使用指針 堆和棧的區(qū)別分析。需要的朋友參考下
    2013-04-04
  • C++ 多態(tài)性虛函數(shù)和動態(tài)綁定學習筆記

    C++ 多態(tài)性虛函數(shù)和動態(tài)綁定學習筆記

    這篇文章主要為大家介紹了C++ 多態(tài)性虛函數(shù)和動態(tài)綁定學習筆記,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-10-10
  • C++ 中消息隊列函數(shù)實例詳解

    C++ 中消息隊列函數(shù)實例詳解

    這篇文章主要介紹了C++ 中消息隊列函數(shù)實例詳解的相關資料,需要的朋友可以參考下
    2017-06-06
  • C語言版停車位管理系統(tǒng)

    C語言版停車位管理系統(tǒng)

    這篇文章主要為大家詳細介紹了C語言版停車位管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • C++中inline函數(shù)詳解

    C++中inline函數(shù)詳解

    inline函數(shù)的定義:在函數(shù)聲明或定義中函數(shù)返回類型前加上關鍵字inline,即可以把函數(shù)指定為內(nèi)聯(lián)函數(shù)。inline函數(shù)對編譯器而言必須是可見的,以便它能夠在調(diào)用點展開該函數(shù)。
    2015-07-07

最新評論