當前位置:首頁 » 編程語言 » 冒泡java

冒泡java

發布時間: 2022-02-07 16:24:05

『壹』 java冒泡排序

packageTest;

importjava.util.Arrays;

publicclassDemo1{
publicstaticvoidmain(String[]args){
int[]a={2,1,3,9,7,10,8,11,17,6};
//System.out.println(Arrays.toString(a));
sortArr(a,a.length-1,0);
System.out.println(Arrays.toString(a));
sort(a);
System.out.println(Arrays.toString(a));
}

publicstaticvoidsortArr(int[]a,inti,intj){
if(j<i){
sortOne(a,i,j);
}else{
sortOne(a,--i,0);
}
}

publicstaticvoidsortOne(int[]a,inti,intj){
if(i==0)return;
if(a[j+1]<a[j]){
inttemp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
sortArr(a,i,++j);
}

publicstaticvoidsort(int[]a)
{
inttemp=0;
for(inti=a.length-1;i>0;--i)
{
for(intj=0;j<i;++j)
{
if(a[j+1]<a[j])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
}
}

上面代碼是從小到大排列

packageTest;

importjava.util.Arrays;

publicclassDemo1{
publicstaticvoidmain(String[]args){
Object[]a={2,1,3,9,7,10,8,11,17,6};
sortArr(a,a.length-1,0);
System.out.println(Arrays.toString(a));
Object[]b={'a','m','s','b','h','e'};
sortArr(b,b.length-1,0);
System.out.println(Arrays.toString(b));

}

publicstaticvoidsortArr(Object[]a,inti,intj){
if(j<i){
sortOne(a,i,j);
}else{
sortOne(a,--i,0);
}
}

publicstaticvoidsortOne(Object[]a,inti,intj){
if(i==0)return;
if(a[j+1]instanceofInteger){
if(Integer.valueOf(""+a[j+1])<Integer.valueOf(""+a[j])){
Objecttemp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}elseif(a[j+1]instanceofCharacter){
if(a[j+1].toString().charAt(0)<a[j].toString().charAt(0)){
Objecttemp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
sortArr(a,i,++j);
}

// publicstaticvoidsort(int[]a)
// {
// inttemp=0;
// for(inti=a.length-1;i>0;--i)
// {
// for(intj=0;j<i;++j)
// {
// if(a[j+1]<a[j])
// {
// temp=a[j];
// a[j]=a[j+1];
// a[j+1]=temp;
// }
// }
// }
// }
}

『貳』 java實現冒泡排序

你這樣寫,相當於只冒了一次泡,把最大的一個數,也就是最後一個數,找出來了,冒泡排序是要for循環里在嵌套一個for循環才能做出來的,外面的for循環控制冒泡多少次,裡面的循環找出每次的最大值。你這樣寫少了外面的那個for循環,相當於只找了一次最大值。

『叄』 java的冒泡排序

for(int j=1;j<a.length-i;i++)
你這里j=1,改成j=i+1 j<a.length 就可以了
因為你這里是 一個嵌套,數組的長度是固定的為5,另外這里的 i++,應該改成 j++ 估計打錯了 我不知道你這里用 j<a.length-i 這里的減i是什麼目的?我們可分析一下:當i=0 時j=1 j<a.length-i(值為5-0=5) 1<5可以通過,當i=1 j=2 j<a.length-i(值為5-1=4) 2<4 通過,當i=2 j=3 j<a.lenght-i (值為5-2=3)這時j=3 而a.lenght-i的值也為3 3<3 不成立 所以不通過。j++也將不執行 所以 不能將數組的所有的數進行比較。

『肆』 冒泡排序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中的冒泡排序

for(int j=0;i<monkeys.length-1-i;j++)
{
if(monkeys[j].height>monkeys[j+1].height) //該行會報數組越界錯誤

第一行。。for(int j=0;i<monkeys.length-1-i;j++)中的i<monkeys.length-1-i明顯邏輯不對。。該是j<monkeys.length-1-i吧

『陸』 JAVA冒泡

冒泡就是兩兩交換。。
每循環一次就排好一個數。

10 8 18 7 4
冒泡排序就是內循環
首先用10跟8去比較,10大於8,就進行交換
8 10 18 7 4
然後用10跟18比,不用交換
再用18跟7比,交換,最後跟4比,交換。
第一次外循環結束。
8 10 7 4 18
然後再用8去跟後面的比。。
而18已經排好了,所以就不需要再比較了。。

『柒』 java中的冒泡排序法

內層循環一次得到這個數組中最大的數並把它放在數組最後一個,同時把內層需要再循環的數組長度減1,即去掉數組中最後一個數(也就是最大的一個)。
外層循環控制內層循環執行幾次。

『捌』 java冒泡排序

其實3樓的回答已經說到重點了,但問題不在於你的if條件里
你這個題的錯誤在於你排序的內層循環的終止條件有問題
不應該是j<a.length因為這個會得到你數組的長度,而你內層循環做的是對每次比較進行循環,也就是說外層循環是控制一共幾個數參與冒泡,而內層則是控制每個數字要跟其他的幾個去比較,就好比5個人比身高其中一個要跟幾個比?是不是4個呢,他不用跟自己比,因此這個語句需要寫成j<a.length-1,那這個時候已經可以正常執行了,但是還不是最好的答案,因為大家都知道冒泡排序是從底下開始將要排序的數據一個個的弄到最上面,那這個過程中外循環執行一次,就會有一個數據在內層循環的工作下,經過比對成功的到頂,那這個數據已經和所有的數據進行過比對了,他已經是最大或者最小的了,後後面的數據再進行比較的時候已經沒必要再去跟它比較了,再比雖然不會錯,但是會額外的消耗一些性能做一些沒意義的事情了。解決方案是修改內循環的結束條件為j<a.length-1-i
為什麼減i呢,i是控制每個數字去循環比對的循環中的變數,每比出來一個,它會自加一次,也就是說i是幾就代表已經排好幾個了,這已經排好的幾個,我們已經不需要再去做比較了,因此我們將它們減掉。
另外現在在JAVA裡面已經不需要自己手寫冒泡排序了,使用util包的Arrays類的sort方法就可以進行排序了,不過還是很認同你的學習精神的,畢竟冒泡排序在其他的語言中還是有用的呵呵。

『玖』 JAVA中的冒泡排序

  1. 為什麼可以用BubbleSort來定義

BubbleSort不是變數名,而是類名。 new BubbleSort 是新建一個實例




2.這裡面public void sort(int array[])是啥意思

這個是函數定義。 函數名是sort、參數是int array[]

『拾』 冒泡社區java與真正的java有什麼區別

冒泡不可能支持JAVA,純粹唬人,因為虛擬內存嚴重不足,國產或山寨都是五六百KB左右,沒個十來兆是不夠的,建議樓主別買這些,現在諾基亞五六百S40系統的還是很不錯的,比國廠好太多了.手機黨,純手打,望納!

熱點內容
這里的秘密碼是多少 發布:2024-12-28 01:58:07 瀏覽:481
rce訪問 發布:2024-12-28 01:57:58 瀏覽:478
java工程師招生 發布:2024-12-28 01:49:23 瀏覽:603
卡管家源碼 發布:2024-12-28 01:47:56 瀏覽:447
hnmcc文件夾 發布:2024-12-28 01:47:09 瀏覽:257
忘記鎖屏密碼怎麼恢復出廠設置 發布:2024-12-28 01:26:29 瀏覽:214
手機存儲mb什麼意思 發布:2024-12-28 01:26:29 瀏覽:138
qq代掛系統源碼 發布:2024-12-28 00:43:48 瀏覽:377
潛淵症伺服器聯機怎麼存檔 發布:2024-12-28 00:42:52 瀏覽:207
合肥沛頓存儲是哪家上市公司持有 發布:2024-12-28 00:42:52 瀏覽:843