誰能幫我解釋一下算法
for(i=0;i<10;i++)
? ? {
? ? ? ? if(i != 9)? ?
? ? ? ? ? ? printf("%.2f, ", arr[i]);? //%.2f表示小數(shù)點(diǎn)后精確到兩位
? ? ? ? else
? ? ? ? ? ? printf("%.2f", arr[i]);? ? //%.2f表示小數(shù)點(diǎn)后精確到兩位
? ? }
? ? for(i=8; i>=0; i--)
? ? {
? ? ? ? for(j=0;j<=i;j++)
? ? ? ? {
? ? ? ? ? ? if(? ? ? ?? ? ? )? ? ? //當(dāng)前面的數(shù)比后面的數(shù)大時(shí)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? double temp;? ? //定義臨時(shí)變量temp
? ? ? ? ? ? ? ? ?? ? ?//將前面的數(shù)賦值給temp
? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? //前后之?dāng)?shù)顛倒位置
? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? //將較大的數(shù)放在后面? ??
? ? ? ? ? ? }? ? ? ? ? ? ? ? ?
? ? ? ? }? ? ? ? ? ? ? ??
? ? }
? ? printf("\n************排隊(duì)后*************\n");
? ? for(i=0;i<10;i++)
? ? {
? ? ? ? if(i != 9)? ?
? ? ? ? ? ? printf("%.2f, ", arr[i]);? //%.2f表示小數(shù)點(diǎn)后精確到兩位? ? ?
? ? ? ? else
? ? ? ? ? ? printf("%.2f", arr[i]);? ? //%.2f表示小數(shù)點(diǎn)后精確到兩位
? ? }
2018-11-20
冒泡排序算法的原理如下:
比較相鄰的元素。如果第一個(gè)比第二個(gè)大,就交換他們兩個(gè)。
對(duì)每一對(duì)相鄰元素做同樣的工作,從開始第一對(duì)到結(jié)尾的最后一對(duì)。在這一點(diǎn),最后的元素應(yīng)該會(huì)是最大的數(shù)。
針對(duì)所有的元素重復(fù)以上的步驟,除了最后一個(gè)。
持續(xù)每次對(duì)越來越少的元素重復(fù)上面的步驟,直到?jīng)]有任何一對(duì)數(shù)字需要比較。
emmmmm好像是這樣的,比較出名的一個(gè)算法,
先輸出原來的數(shù)組,然后使用冒泡排序,然后在輸出排序之后的算法。
先使用一個(gè)for循環(huán)輸出原來的數(shù)組
然后使用一個(gè)鑲套的for循環(huán)運(yùn)行冒泡排序
然后再用一個(gè)for循環(huán)輸出排序之后的
2018-10-22
內(nèi)層j循環(huán)每次將兩兩比較中較大的數(shù)不斷傳遞到下一個(gè),最后將這一輪比較所得最大的數(shù)排列到最后,外層的i循環(huán)每次將上一輪循環(huán)去掉最大數(shù)后剩下的那組數(shù)中最大的數(shù)再次通過內(nèi)層j循環(huán)傳遞到本輪末尾。即i循環(huán)第1輪,通過將j循環(huán)將10個(gè)數(shù)中最大的傳遞到最后一位;i循環(huán)第2輪,通過j循環(huán)將剩下9個(gè)數(shù)中最大數(shù)的傳遞到倒數(shù)第二位,以此類推。