Bubble Sort,bubblesort
Jun 13, 2016 am 09:21 AMBubble Sort,bubblesort
8 numbers. Sort as ascend.
?
1st loop, compare 7 times (for 8 numbers), and found the largest 8.
2nd loop, compare 6 times (for 7 numbers), and found the largest 7.
. . .
?
1, 7, 8
2, 6, 7
3, 5, 6
4, 4, 5
5, 3, 4
6, 2, 3
7, 1, 2
?
In conclusion:?For sorting 8 numbers, we need an outer loop of 7 times, each time for finding a largest number; and an inner loop from comparing 7 times to comparing 1 time (as in the center column).
?
Implementation in PHP:?
<span> 1</span> <?<span>php </span><span> 2</span> <span>/*</span><span> bubble sort: </span><span> 3</span> <span> 1. operate directly on the input array (&), not on a copy </span><span> 4</span> <span> 2. sort as ascend </span><span> 5</span> <span> 6</span> <span> a is array </span><span> 7</span> <span> m is length of a </span><span> 8</span> <span> n is times of outer loop, n-i is times of comparing for each outer loop </span><span> 9</span> <span> i/j is for-loop counter </span><span>10</span> <span> w is for value swap </span><span>11</span> <span>*/</span> <span>12</span> <span>function</span> sortBubble(&<span>$a</span><span>){ </span><span>13</span> <span>$m</span> = <span>count</span>(<span>$a</span><span>); </span><span>14</span> <span>$n</span> = <span>$m</span> - 1<span>; </span><span>15</span> <span>for</span>(<span>$i</span>=0; <span>$i</span><<span>$n</span>; <span>$i</span>++<span>){ </span><span>16</span> <span>for</span>(<span>$j</span>=0; <span>$j</span><<span>$n</span>-<span>$i</span>; <span>$j</span>++<span>){ </span><span>17</span> <span>if</span>(<span>$a</span>[<span>$j</span>] > <span>$a</span>[<span>$j</span>+1<span>]){ </span><span>18</span> <span>$w</span> = <span>$a</span>[<span>$j</span><span>]; </span><span>19</span> <span>$a</span>[<span>$j</span>] = <span>$a</span>[<span>$j</span>+1<span>]; </span><span>20</span> <span>$a</span>[<span>$j</span>+1] = <span>$w</span><span>; </span><span>21</span> <span> } </span><span>22</span> <span>else</span><span>{ </span><span>23</span> <span>//</span><span> do nothing</span> <span>24</span> <span> } </span><span>25</span> <span> } </span><span>26</span> <span>//</span><span> see the results after each outer loop </span><span>27</span> <span> // echo implode(', ', $a).'<br />';</span> <span>28</span> <span> } </span><span>29</span> <span>} </span><span>30</span> <span>31</span> <span>$arr</span> = <span>array</span>(9, 5, 2, 7, 3<span>); </span><span>32</span> sortBubble(<span>$arr</span><span>); </span><span>33</span> <span>echo</span> <span>implode</span>(', ', <span>$arr</span><span>); </span><span>34</span> <span>35</span> <span>//</span><span> 2, 3, 5, 7, 9</span> <span>37</span> ?>
?
冒泡排序詳細注釋:
冒泡排序詳細注釋:
/* 用冒泡排序法對一維整型數(shù)組中的十個數(shù)升序排序 */
#include
#include
int main()
{
int i,j,t,a[10];
printf("Please input 10 integers:\n");
for(i=0;iscanf("%d",&a[i]);
for(i=0;ifor(j=0;jif(a[j]>a[j+1])
{t=a[j];/* 交換a[i]和a[j] */
a[j]=a[j+1];
a[j+1]=t;
}
printf("The sequence after sort is:\n");
for(i=0;iprintf("%-5d",a[i]);
printf("\n");
system("pause");
return 0;
}
其中i=0時:
j從0開始a[0],a[1]比較大小,把其中的較大者給a[1],然后j++,a[1]和a[2]再比較,再把兩者中的
較大者給a[2],這樣a[0],a[1],a[2]中的最大者已經(jīng)交換到a[2]中,這個過程繼續(xù),直到j(luò)=10-i-1=9這樣
a[9]中的為10個數(shù)中的最大數(shù)。
然后i=1時:
由于最大數(shù)已找到并放到a[9]中,所以這一次循環(huán)j最大只需到10-i-1=8,即a[8]即可,再次從j=0開始a[j]和a[j+1]兩兩比較交換,最后次大數(shù)放到a[8]中
然后i++,繼續(xù)...
當i=9時已經(jīng)過9次兩兩比較完成所有排序,i對于n個數(shù),只需要進行n-1次外循環(huán)的兩兩比較就完成排序。
至于按降序排列只需將if(a[j]>a[j+1])改為if(a[j]
-------------------------------------------------------------------
/* 用改進型冒泡排序法對一維整型數(shù)組中的十個數(shù)升序排序 */
#include
#include
int main()
{int i,j,t,a[10],flag;
printf("Please input 10 integers:\n");
for(i=0;iscanf("%d",&a[i]);
for(i=0;i{ flag=0;
for(j=0;jif(a[j]>a[j+1])
{ t=a[j]; /* 交換a[i]和a[j] */
a[j]=a[j+1];
a[j+1]=t;
flag=1;
}
if(flag==0)break;
}
printf("The sequence after sort is:\n&......余下全文>>
?
/* 用冒泡排序法對一維整型數(shù)組中的十個數(shù)升序排序 */
#include
#include
int main()
{
int i,j,t,a[10];
printf("Please input 10 integers:\n");
for(i=0;iscanf("%d",&a[i]);
for(i=0;ifor(j=0;jif(a[j]>a[j+1])
{t=a[j];/* 交換a[i]和a[j] */
a[j]=a[j+1];
a[j+1]=t;
}
printf("The sequence after sort is:\n");
for(i=0;iprintf("%-5d",a[i]);
printf("\n");
system("pause");
return 0;
}
其中i=0時:
j從0開始a[0],a[1]比較大小,把其中的較大者給a[1],然后j++,a[1]和a[2]再比較,再把兩者中的
較大者給a[2],這樣a[0],a[1],a[2]中的最大者已經(jīng)交換到a[2]中,這個過程繼續(xù),直到j(luò)=10-i-1=9這樣
a[9]中的為10個數(shù)中的最大數(shù)。
然后i=1時:
由于最大數(shù)已找到并放到a[9]中,所以這一次循環(huán)j最大只需到10-i-1=8,即a[8]即可,再次從j=0開始a[j]和a[j+1]兩兩比較交換,最后次大數(shù)放到a[8]中
然后i++,繼續(xù)...
當i=9時已經(jīng)過9次兩兩比較完成所有排序,i對于n個數(shù),只需要進行n-1次外循環(huán)的兩兩比較就完成排序。
至于按降序排列只需將if(a[j]>a[j+1])改為if(a[j]
-------------------------------------------------------------------
/* 用改進型冒泡排序法對一維整型數(shù)組中的十個數(shù)升序排序 */
#include
#include
int main()
{int i,j,t,a[10],flag;
printf("Please input 10 integers:\n");
for(i=0;iscanf("%d",&a[i]);
for(i=0;i{ flag=0;
for(j=0;jif(a[j]>a[j+1])
{ t=a[j]; /* 交換a[i]和a[j] */
a[j]=a[j+1];
a[j+1]=t;
flag=1;
}
if(flag==0)break;
}
printf("The sequence after sort is:\n&......余下全文>>
?

熱AI工具

Undress AI Tool
免費脫衣服圖片

Undresser.AI Undress
人工智能驅(qū)動的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover
用于從照片中去除衣服的在線人工智能工具。

Clothoff.io
AI脫衣機

Video Face Swap
使用我們完全免費的人工智能換臉工具輕松在任何視頻中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的代碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
功能強大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6
視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版
神級代碼編輯軟件(SublimeText3)

數(shù)據(jù)結(jié)構(gòu)和算法是Java開發(fā)的基礎(chǔ),本文深入探討Java中的關(guān)鍵數(shù)據(jù)結(jié)構(gòu)(如數(shù)組、鏈表、樹等)和算法(如排序、搜索、圖算法等)。這些結(jié)構(gòu)通過實戰(zhàn)案例進行說明,包括使用數(shù)組存儲分數(shù)、使用鏈表管理購物清單、使用棧實現(xiàn)遞歸、使用隊列同步線程以及使用樹和哈希表進行快速搜索和身份驗證等。理解這些概念可以編寫高效且可維護的Java代碼。

函數(shù)指針技術(shù)可提升代碼效率和可復(fù)用性,具體表現(xiàn)為:提升效率:使用函數(shù)指針可減少重復(fù)代碼,優(yōu)化調(diào)用過程。提高可復(fù)用性:函數(shù)指針允許使用通用函數(shù)處理不同數(shù)據(jù),提高程序的可復(fù)用性。

Go語言是一種越來越流行的編程語言,它被設(shè)計成易于編寫、易于閱讀和易于維護的語言,同時也支持高級編程概念。時間復(fù)雜度和空間復(fù)雜度是算法和數(shù)據(jù)結(jié)構(gòu)分析中重要的概念,它們衡量著一個程序的執(zhí)行效率和占用內(nèi)存大小。在本文中,我們將重點分析Go語言中的時間復(fù)雜度和空間復(fù)雜度。時間復(fù)雜度時間復(fù)雜度是指算法執(zhí)行時間與問題規(guī)模之間的關(guān)系。通常用大O表示法來表示時間

如何實現(xiàn)C#中的冒泡排序算法冒泡排序是一種簡單但有效的排序算法,它通過多次比較相鄰的元素并交換位置來排列一個數(shù)組。在本文中,我們將介紹如何使用C#語言實現(xiàn)冒泡排序算法,并提供具體的代碼示例。首先,讓我們了解一下冒泡排序的基本原理。算法從數(shù)組的第一個元素開始,與下一個元素進行比較。如果當前元素比下一個元素大,則交換它們的位置;如果當前元素比下一個元素小,則保持

算法是解決問題的指令集,其執(zhí)行速度和內(nèi)存占用各不相同。編程中,許多算法都基于數(shù)據(jù)搜索和排序。本文將介紹幾種數(shù)據(jù)檢索和排序算法。線性搜索假設(shè)有一個數(shù)組[20,500,10,5,100,1,50],需要查找數(shù)字50。線性搜索算法會逐個檢查數(shù)組中的每個元素,直到找到目標值或遍歷完整個數(shù)組。算法流程圖如下:線性搜索的偽代碼如下:檢查每個元素:如果找到目標值:返回true返回falseC語言實現(xiàn):#include#includeintmain(void){i

如何編寫自定義PHP數(shù)組排序算法?冒泡排序:通過比較和交換相鄰元素來排序數(shù)組。選擇排序:每次選擇最小或最大元素并將其與當前位置交換。插入排序:逐個插入元素到有序部分。

PHP數(shù)組排序算法復(fù)雜度:冒泡排序:O(n^2)快速排序:O(nlogn)(平均)歸并排序:O(nlogn)

云計算中數(shù)據(jù)結(jié)構(gòu)和算法的使用至關(guān)重要,用于管理和處理海量數(shù)據(jù)。常見的數(shù)據(jù)結(jié)構(gòu)包括數(shù)組、列表、哈希表、樹和圖。常用的算法有排序算法、搜索算法和圖算法。利用Java的強大功能,開發(fā)者可以使用Java集合、線程安全數(shù)據(jù)結(jié)構(gòu)和ApacheCommonsCollections來實現(xiàn)這些數(shù)據(jù)結(jié)構(gòu)和算法。
