C語言冒泡排序改進版-創(chuàng)新互聯(lián)

排序—冒泡排序

1.原理: 比較兩個相鄰的元素,將值大的元素交換到右邊

成都創(chuàng)新互聯(lián)公司長期為上1000+客戶提供的網(wǎng)站建設(shè)服務(wù),團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為新縣企業(yè)提供專業(yè)的網(wǎng)站設(shè)計、成都網(wǎng)站設(shè)計,新縣網(wǎng)站改版等技術(shù)服務(wù)。擁有十載豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。

2.設(shè)計原理:(文字):N個數(shù)字要排序完成,總共進行N-1趟排序,每i趟的排序次數(shù)為(N-i)次,所以可以用雙重循環(huán)語句,外層控制循環(huán)多少趟,內(nèi)層控制每一趟的循環(huán)次數(shù)
舉例來說:
在這里插入圖片描述
3.冒泡排序的優(yōu)點: 每進行一趟排序,就會少比較一次,因為每進行一趟排序都會找出一個較大值。如上例:第一趟比較之后,排在最后的一個數(shù)一定是大的一個數(shù),第二趟排序的時候,只需要比較除了最后一個數(shù)以外的其他的數(shù),同樣也能找出一個大的數(shù)排在參與第二趟比較的數(shù)后面,第三趟比較的時候,只需要比較除了最后兩個數(shù)以外的其他的數(shù),以此類推……也就是說,每進行一趟比較,每一趟少比較一次。
冒泡排序的代碼:

#includevoid Swap(int* x, int* y)
{int tmp = *x;
	*x = *y;
	*y = tmp;
}
void BubbleSort(int* arr, int sz)
{for (int i = 0; i< sz; i++)
	{for (int j = 0; j< sz - 1 - i; j++)
		{	if (arr[j] >arr[j + 1])
			{		Swap(&arr[j], &arr[j+1]);
			}
		}
	}
}
int main()
{int arr[10] = {1,3,5,7,9,2,4,6,8,10 };
	int sz = sizeof(arr) / sizeof(arr[0]);
	BubbleSort(arr,sz);
	return 0;
}
冒泡排序改進版

但是呢冒泡排序有一個弊端:假設(shè)數(shù)組是這樣一組數(shù)int arr[5]={5,1,2,3,4};
其實第一輪冒泡排序結(jié)束數(shù)組就已經(jīng)排序完成,但是冒泡排序還是會一直進行第二趟冒泡排序,第三趟冒泡排序,第四趟冒泡排序,浪費時間。所以可以對冒泡排序進行優(yōu)化。

#includevoid Swap(int* x, int* y)
{int tmp = *x;
	*x = *y;
	*y = tmp;
}
int flag = 0;
void BubbleSort(int* arr, int sz)
{for (int i = 0; i< sz-1&&flag==0; i++)
	{int flag = 1;
		for (int j = 0; j< sz - 1 - i; j++)
		{	if (arr[j] >arr[j + 1])
			{		Swap(&arr[j], &arr[j+1]);
				flag = 0;
			}
		}
	}
}
int main()
{int arr[10] = {1,3,5,7,9,2,4,6,8,10 };
	int sz = sizeof(arr) / sizeof(arr[0]);
	BubbleSort(arr,sz);
	return 0;
}

簡單來說:當(dāng)完成了第n趟冒泡排序后再進行第n+1趟時發(fā)現(xiàn)前面一個數(shù)都是小于后一個數(shù),那么if內(nèi)的語句不在執(zhí)行flag=1,冒泡排序不在往后執(zhí)行程序結(jié)束。

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧

分享題目:C語言冒泡排序改進版-創(chuàng)新互聯(lián)
當(dāng)前鏈接:http://muchs.cn/article10/cedddo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開發(fā)、搜索引擎優(yōu)化網(wǎng)站維護、網(wǎng)站設(shè)計、企業(yè)建站外貿(mào)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設(shè)計