Java數(shù)據(jù)結(jié)構(gòu)及算法實(shí)例:冒泡排序 Bubble Sort
更新時(shí)間:2015年06月20日 11:07:19 投稿:junjie
這篇文章主要介紹了Java數(shù)據(jù)結(jié)構(gòu)及算法實(shí)例:冒泡排序 Bubble Sort,本文直接給出實(shí)現(xiàn)代碼,代碼中包含詳細(xì)注釋,需要的朋友可以參考下
/**
* 冒泡排序估計(jì)是每本算法書籍都會提到的排序方法。
* 它的基本思路是對長度為N的序列,用N趟來將其排成有序序列。
* 第1趟將最大的元素排在序列尾部,第2趟將第2大的元素排在倒數(shù)第二的位置,
* 即每次把未排好的最大元素冒泡到序列最后端。
* 該排序方法實(shí)際上分為兩重循環(huán),外層循環(huán):待排元素從數(shù)組的第1個(gè)元素開始。
* 內(nèi)層循環(huán):待排元素從數(shù)組的第1個(gè)元素開始,直到數(shù)組尾端未排過的元素。
* 在內(nèi)循環(huán)中,如果遇到前面元素比其后的元素大就交換這兩個(gè)元素的位置。
* 由此可見冒泡排序的復(fù)雜度是O(n^2)
*/
package al;
public class BubbleSort {
/*
* 冒泡排序 Java語言編寫,可以直接運(yùn)行 輸入:n個(gè)數(shù)<a1,a2,,an>
* 輸出:輸入序列的一個(gè)排列<a1',a2',,an'>,其中a1'<=a2'<=<=an' 待排的數(shù)也稱為key 復(fù)雜度:O(n^2) 輸出結(jié)果:9
* 10 14 14 21 43 50 77 例子:高矮個(gè)站隊(duì)
*/
public static void main(String[] args) {
BubbleSort bubbleSort = new BubbleSort();
int[] elements = { 14, 77, 21, 9, 10, 50, 43, 14 };
// sort the array
bubbleSort.sort(elements);
// print the sorted array
for (int i = 0; i < elements.length; i++) {
System.out.print(elements[i]);
System.out.print(" ");
}
}
/**
* @author
* @param array
* 待排數(shù)組
* @return void
*/
public void sort(int[] array) {
int i, j;
int tmp;
for (i = 0; i <= (array.length - 1); i++) { // outer loop
for (j = 0; j < (array.length - 1 - i); j++) { // inner loop
if (array[j] > array[j + 1]) {
tmp = array[j];
array[j] = array[j + 1];
array[j + 1] = tmp;
}
}
}
}
}
您可能感興趣的文章:
- java數(shù)據(jù)結(jié)構(gòu)與算法之中綴表達(dá)式轉(zhuǎn)為后綴表達(dá)式的方法
- Java數(shù)據(jù)結(jié)構(gòu)及算法實(shí)例:考拉茲猜想 Collatz Conjecture
- Java數(shù)據(jù)結(jié)構(gòu)及算法實(shí)例:快速計(jì)算二進(jìn)制數(shù)中1的個(gè)數(shù)(Fast Bit Counting)
- Java數(shù)據(jù)結(jié)構(gòu)及算法實(shí)例:樸素字符匹配 Brute Force
- java數(shù)據(jù)結(jié)構(gòu)和算法學(xué)習(xí)之漢諾塔示例
- Java數(shù)據(jù)結(jié)構(gòu)與算法入門實(shí)例詳解
相關(guān)文章
SpringBoot+WebMagic實(shí)現(xiàn)網(wǎng)頁爬蟲的示例代碼
本文是對spring?boot+WebMagic+MyBatis做了整合,使用WebMagic爬取數(shù)據(jù),然后通過MyBatis持久化爬取的數(shù)據(jù)到mysql數(shù)據(jù)庫,具有一定的參考價(jià)值,感興趣的可以了解一下2023-10-10
java?中的HashMap的底層實(shí)現(xiàn)和元素添加流程
這篇文章主要介紹了java?中的HashMap的底層實(shí)現(xiàn)和元素添加流程,HashMap?是使用頻率最高的數(shù)據(jù)類型之一,同時(shí)也是面試必問的問題之一,尤其是它的底層實(shí)現(xiàn)原理,下文更多詳細(xì)內(nèi)容,需要的小伙伴可以參考一下2022-05-05
分享Java程序員應(yīng)該知道的10個(gè)調(diào)試技巧
在本文中,作者將使用大家常用的的開發(fā)工具Eclipse來調(diào)試Java應(yīng)用程序。但這里介紹的調(diào)試方法基本都是通用的,也適用于NetBeans IDE,我們會把重點(diǎn)放在運(yùn)行時(shí)上面2012-09-09
java如何使用fastjson修改多層嵌套的Objectjson數(shù)據(jù)
這篇文章主要介紹了java如何使用fastjson修改多層嵌套的Objectjson數(shù)據(jù)問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-05-05
使用SpringBoot編寫一個(gè)優(yōu)雅的單元測試
這篇文章主要為大家詳細(xì)介紹了如何使用SpringBoot編寫一個(gè)優(yōu)雅的單元測試,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解一下2023-07-07
springboot使用Mybatis(xml和注解)過程全解析
這篇文章主要介紹了springboot使用Mybatis(xml和注解)過程全解析 ,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-05-05
SpringBoot啟動(dòng)報(bào)錯(cuò)屬性循環(huán)依賴報(bào)錯(cuò)問題的解決
這篇文章主要介紹了SpringBoot啟動(dòng)報(bào)錯(cuò)屬性循環(huán)依賴報(bào)錯(cuò)問題的解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-05-05

