冒泡排序
(1)基本思想:在要排序的一組數中,對當前還未排好序的范圍內的全部數,自上而下對相鄰的兩個數依次進行比較和調整,讓較大的數往下沉,較小的往上冒。即:每當兩相鄰的數比較後發現它們的排序與排序要求相反時,就將它們互換。
(2)用java實現
ublicclassbubbleSort{
publicbubbleSort(){
inta[]={1,54,6,3,78,34,12,45};
inttemp=0;
for(inti=0;i<a.length;i++){
for(intj=i+1;j<a.length;j++){
if(a[i]>a[j]){
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
for(inti=0;i<a.length;i++)
System.out.println(a[i]);
}
}
遞歸
遞歸演算法,就是程序的自身調用。表現在一段程序中往往會遇到調用自身的那樣一種coding策略,可以利用大道至簡的思想,把一個大的復雜的問題層層轉換為一個小的和原問題相似的問題來求解的這樣一種策略。能看到我們會用很少的語句解決了非常大的問題,所以遞歸策略的最主要體現就是小的代碼量解決了非常復雜的問題。
java代碼:
packagecom.cjq.filedown;
publicclassFab{
publicstaticvoidmain(Stringargs[]){
System.out.println(fab(5));
}
privatestaticintfab(intindex){
if(index==1||index==2){
return1;
}else{
returnfab(index-1)+fab(index-2);
}
}
}
❷ java冒泡排序法代碼
冒泡排序是比較經典的排序演算法。代碼如下:
for(int i=1;i<arr.length;i++){
for(int j=1;j<arr.length-i;j++){
//交換位置
}
拓展資料:
原理:比較兩個相鄰的元素,將值大的元素交換至右端。
思路:依次比較相鄰的兩個數,將小數放在前面,大數放在後面。即在第一趟:首先比較第1個和第2個數,將小數放前,大數放後。然後比較第2個數和第3個數,將小數放前,大數放後,如此繼續,直至比較最後兩個數,將小數放前,大數放後。重復第一趟步驟,直至全部排序完成。
第一趟比較完成後,最後一個數一定是數組中最大的一個數,所以第二趟比較的時候最後一個數不參與比較;
第二趟比較完成後,倒數第二個數也一定是數組中第二大的數,所以第三趟比較的時候最後兩個數不參與比較;
依次類推,每一趟比較次數-1;
……
舉例說明:要排序數組:int[]arr={6,3,8,2,9,1};
for(int i=1;i<arr.length;i++){
for(int j=1;j<arr.length-i;j++){
//交換位置
}
❸ 用Java中ArrayList類實現一個冒泡排序
java.util.Collections類中有
sort
public static <T extends Comparable<? super T>> void sort(List<T> list)根據元素的自然順序 對指定列表按升序進行排序。列表中的所有元素都必須實現 Comparable 介面。此外,列表中的所有元素都必須是可相互比較的(也就是說,對於列表中的任何 e1 和 e2 元素,e1.compareTo(e2) 不得拋出 ClassCastException)。
此排序方法具有穩定性:不會因調用 sort 方法而對相等的元素進行重新排序。
指定列表必須是可修改的,但不必是大小可調整的。
該排序演算法是一個經過修改的合並排序演算法(其中,如果低子列表中的最高元素小於高子列表中的最低元素,則忽略合並)。此演算法提供可保證的 n log(n) 性能。 此實現將指定列表轉儲到一個數組中,並對數組進行排序,在重置數組中相應位置處每個元素的列表上進行迭代。這避免了由於試圖原地對鏈接列表進行排序而產生的 n2 log(n) 性能。
參數:
list - 要排序的列表。
拋出:
ClassCastException - 如果列表包含不可相互比較 的元素(例如,字元串和整數)。
UnsupportedOperationException - 如果指定列表的列表迭代器不支持 set 操作。
另請參見:
Comparable
--------------------------------------------------------------------------------
sort
public static <T> void sort(List<T> list,
Comparator<? super T> c)根據指定比較器產生的順序對指定列表進行排序。此列表內的所有元素都必須可使用指定比較器相互比較(也就是說,對於列表中的任意 e1 和 e2 元素,c.compare(e1, e2) 不得拋出 ClassCastException)。
此排序被保證是穩定的:不會因調用 sort 而對相等的元素進行重新排序。
排序演算法是一個經過修改的合並排序演算法(其中,如果低子列表中的最高元素小於高子列表中的最低元素,則忽略合並)。此演算法提供可保證的 n log(n) 性能。 指定列表必須是可修改的,但不必是可大小調整的。此實現將指定列表轉儲到一個數組中,並對數組進行排序,在重置數組中相應位置每個元素的列表上進行迭代。這避免了由於試圖原地對鏈接列表進行排序而產生的 n2 log(n) 性能。
參數:
list - 要排序的列表。
c - 確定列表順序的比較器。null 值指示應該使用元素的自然順序。
拋出:
ClassCastException - 如果列表中包含不可使用指定比較器相互比較 的元素。
UnsupportedOperationException - 如果指定列表的列表迭代器不支持 set 操作。
另請參見:
Comparator
❹ JAVA 冒泡排序法的詳細解釋是什麼
冒泡排序的英文Bubble Sort,是一種最基礎的交換排序。
大家一定都喝過汽水,汽水中常常有許多小小的氣泡,嘩啦嘩啦飄到上面來。這是因為組成小氣泡的二氧化碳比水要輕,所以小氣泡可以一點一點向上浮動。而我們的冒泡排序之所以叫做冒泡排序,正是因為這種排序演算法的每一個元素都可以像小氣泡一樣,根據自身大小,一點一點向著數組的一側移動。
冒泡排序演算法的原理如下:
比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。
對每一對相鄰元素做同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。
針對所有的元素重復以上的步驟,除了最後一個。
持續每次對越來越少的元素重復上面的步驟,直到沒有任何一對數字需要比較。
具體如何來移動呢?讓我們來看一個栗子:
希望對您有所幫助!~
❺ 用java語言實現冒泡法
題主你好,很高興回答你的問題,我這里有一個寫好的,你可以參考下,希望能幫到你,望採納。
publicclassBubbleSort{
publicstaticvoidmain(String[]args){
int[]number={95,45,15,78,84,51,24,12};
inttemp=0;
for(inti=0;i<number.length-1;i++)
for(intj=0;j<number.length-1-i;j++)
if(number[j]>number[j+1]){
temp=number[j];
number[j]=number[j+1];
number[j+1]=temp;
}//ifend
System.out.println(System.currentTimeMillis()+"");
for(inti=0;i<number.length;i++)System.out.print(number[i]+"");
System.out.println();
}//mainend
}