導航:首頁 > 源碼編譯 > java實現冒泡排序演算法

java實現冒泡排序演算法

發布時間:2025-07-20 19:11:39

Ⅰ 用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字元串數組怎麼排序

Java中對字元串數組進行排序可以通過多種方法實現,這里提供一個簡單的冒泡排序演算法示例。首先定義一個字元串數組,然後通過比較數組中每個字元串的長度來進行排序。

以下是具體的代碼實現:

package Demo;

public class Demo_120901 {

public static void sortStringArray(String[] arrStr) {

String temp;

for (int i = 0; i < arrStr.length; i++) {

for (int j = arrStr.length - 1; j > i; j--) {

if (arrStr[i].length() > arrStr[j].length()) {

temp = arrStr[i];

arrStr[i] = arrStr[j];

arrStr[j] = temp;

}

}

}

}

public static void main(String[] args) {

String[] arrStr = { "yours", "am", "I" };

sortStringArray(arrStr);

for (int i = 0; i < arrStr.length; i++) {

System.out.println(arrStr[i]);

}

}

}

這個示例中,我們首先定義了一個字元串數組arrStr,然後調用sortStringArray方法進行排序。排序的過程是通過比較每個字元串的長度來實現的,如果當前字元串的長度大於下一個字元串的長度,則交換它們的位置。最終,數組中的字元串會按照長度從小到大的順序排列。

在main方法中,我們通過遍歷排序後的數組並列印每個元素來驗證排序是否正確。

希望這個例子對你有所幫助。如果你還有其他問題,歡迎繼續提問。

Ⅲ Java冒泡排序的原理

冒泡排序是所欲排序演算法里最好理解的了。
1、排序演算法:
A)比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。
B)對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。
C)針對所有的元素重復以上的步驟,除了最後一個。
D)持續每次對越來越少的元素重復上面的步驟,直到沒有任何一對數字需要比較。
2、給你一個java的實現代碼:
public class BubbleSort{
     public static void main(String[] args){
         int score[] = {67, 69, 75, 87, 89, 90, 99, 100};
         for (int i = 0; i < score.length -1; i++){ //最多做n-1趟排序
             for(int j = 0 ;j < score.length - i - 1; j++){ //對當前無序區間score[0......length-i-1]進行排序(j的范圍很關鍵,這個范圍是在逐步縮小的)
                 if(score[j] < score[j + 1]){ //把小的值交換到後面
                     int temp = score[j];
                     score[j] = score[j + 1];
                     score[j + 1] = temp;
                 }
             }
             System.out.print("第" + (i + 1) + "次排序結果:");
             for(int a = 0; a < score.length; a++){
                 System.out.print(score[a] + "\t");
             }
             System.out.println("");
         }
             System.out.print("最終排序結果:");
             for(int a = 0; a < score.length; a++){
                 System.out.print(score[a] + "\t");
        }
     }
 }

Ⅳ 冒泡排序java是

冒泡排序演算法:

int類型的數組:3 1 6 2 5

演算法:取出最大的放在最後,下次就不用比較最後一個了。*/

public class BubbleSort{

public static void main(String[] args){

int[] a = {3,1,6,2,5};

//開始排序

for(int i=a.length-1;i>0;i--){

for(int j=0;j<i;j++){

if(a[j]>a[j+1]){

//交換位置

int temp;

temp = a[j];

a[j] = a[j+1];

a[j+1] = temp;

//遍歷

for(int i=0;i<a.length;i++){

System.out.println(a[i]);

}

演算法原理

冒泡排序演算法的運作如下:(從後往前)

比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。

對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。

針對所有的元素重復以上的步驟,除了最後一個。

持續每次對越來越少的元素重復上面的步驟,直到沒有任何一對數字需要比較。

Ⅳ 用java冒泡排序和遞歸演算法

冒泡排序

(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實現幾種常見排序演算法

下面給你介紹四種常用排序演算法:

1、冒泡排序

特點:效率低,實現簡單

思想(從小到大排):每一趟將待排序序列中最大元素移到最後,剩下的為新的待排序序列,重復上述步驟直到排完所有元素。這只是冒泡排序的一種,當然也可以從後往前排。

Ⅶ java中編寫冒泡排序演算法 bubbleSort(int[]arr)

/**
*des:冒泡排序演算法的一般性策略:搜索整個值列,比較相鄰元素,如果兩者的相對次序不對,
*則交換它們,其結果是最大值「想水泡一樣」移動到值列的最後一個位置上,
*這也是它在最終完成排序的值列中合適的位置。
*然後再次搜索值列,將第二大的值移動至倒數第二個位置上,重復該過程,直至將所有元素移動到正確的位置上。
*2014-4-9-zbl
**/
publicclassBubbleSort{

/**
*@paramargs
*/
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
Comparable[]a={4,9,23,1,45,27,5,2};
bubbleSort1(a);

Comparable[]b={4,9,23,1,45,27,5,2};
bubbleSort2(b);

int[]c={4,9,23,1,45,27,5,2};
bubbleSort3(c);
}

publicstaticvoidbubbleSort3(int[]data)
{
inttemp;
for(inti=0;i<data.length;i++){
intflag=0;
for(intj=0;j<data.length-i-1;j++){
if(data[j]<data[j+1]){
temp=data[j];
data[j]=data[j+1];
data[j+1]=temp;
flag=1;
}
}
if(flag==0)break;
System.out.print("第"+i+"遍:{");
for(intk=0;k<data.length;k++){
System.out.print(data[k]+",");
}
System.out.println("}");
}
}

publicstaticvoidbubbleSort1(Comparable[]data)
{
Comparabletemp;
for(intposition=data.length-1;position>=0;position--){
intflag=0;
for(intscan=0;scan<position;scan++){
if(data[scan].compareTo(data[scan+1])<0){
temp=data[scan];
data[scan]=data[scan+1];
data[scan+1]=temp;
flag=1;
}
}
if(flag==0){
break;
}
System.out.print("第"+position+"遍:{");
for(inti=0;i<data.length;i++){
System.out.print(data[i]+",");
}
System.out.println("}");
}
}

publicstaticvoidbubbleSort2(Comparable[]data)
{
Comparabletemp;
for(intposition=0;position<data.length-1;position++){
intflag=0;
for(intscan=0;scan<data.length-1-position;scan++){
if(data[scan].compareTo(data[scan+1])<0){
temp=data[scan];
data[scan]=data[scan+1];
data[scan+1]=temp;
flag=1;
}
}
if(flag==0){
break;
}
System.out.print("第"+position+"遍:{");
for(inti=0;i<data.length;i++){
System.out.print(data[i]+",");
}
System.out.println("}");
}
}

}

閱讀全文

與java實現冒泡排序演算法相關的資料

熱點內容
淮安加密軟體 瀏覽:6
java日歷源碼 瀏覽:276
安卓大屏導航如何換碟 瀏覽:110
php競拍系統源碼 瀏覽:603
linux501 瀏覽:572
電瓶車怎樣解除解壓功能 瀏覽:254
xbox主機dayz如何選擇伺服器 瀏覽:546
安卓手機app如何分享給別的手機 瀏覽:126
協同過濾演算法思想是什麼 瀏覽:306
mfc網上商城源碼 瀏覽:58
單片機應用系統設計技術復習指南 瀏覽:118
vscode可以當編譯器用嗎 瀏覽:299
anyconnect伺服器地址怎麼用 瀏覽:571
傳奇腳本or命令 瀏覽:252
php互聯網工程師 瀏覽:547
php網站維護 瀏覽:219
wps頁面加密 瀏覽:1002
安卓如何快速開啟藍牙 瀏覽:591
方舟編譯器超級文件限時 瀏覽:925
ipad掃描pdf 瀏覽:420