日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

C語言詳解冒泡排序實現_C 語言

作者:ChaoFreeandeasy_ ? 更新時間: 2022-06-14 編程語言

前言

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

一、冒泡排序是什么

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

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

二、具體步驟

1.代碼解釋

代碼如下(示例):

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

?舉例詳細說明:

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

所以for循環中,需要i<sz-1-j.

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

2.讀入數據

代碼如下(示例)

#include<stdio.h>
 
void bubble(int arr[], int sz)
{
	for (int j = 0; j < sz - 1; j++)           //一趟排n-1次(n為n個數)
									           //n個數的話,就要走n-1趟(每一趟排完以后,都 
                                               //要減去最后一個排好的數)
	{
		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])中符號即可。

注意:在調用函數時,在函數內部無法算出sz,即數組的元素個數,所以需在主函數中算出后,再傳入函數形參中!!

原文鏈接:https://blog.csdn.net/ChaoFreeandeasy_/article/details/123562437

欄目分類
最近更新