最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言詳解冒泡排序?qū)崿F(xiàn)

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

前言

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

一、冒泡排序是什么

從左到右,相鄰元素進(jìn)行比較。每次比較一輪,就會找到序列中最大的一個或最小的一個。這個數(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]);
	}
}

 舉例詳細(xì)說明:

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

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

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

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]);
	}
}

那么可以看出,輸出的結(jié)果就是 

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

總結(jié)

這里對文章進(jìn)行總結(jié):

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

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

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

相關(guān)文章

最新評論

从化市| 高密市| 额尔古纳市| 文安县| 黄梅县| 杭锦旗| 德清县| 澄迈县| 修文县| 贺兰县| 馆陶县| 常山县| 滨海县| 赣州市| 晋江市| 凤台县| 淮阳县| 通海县| 理塘县| 通山县| 虹口区| 大同县| 丰宁| 芜湖市| 绍兴县| 宣城市| 牙克石市| 菏泽市| 名山县| 南昌县| 晋中市| 亚东县| 来凤县| 仁化县| 安泽县| 贺州市| 镇赉县| 酒泉市| 海阳市| 敦煌市| 德清县|