for(i=0;iargs.length;i++) //從第一個元素開始
成都創(chuàng)新互聯(lián)長期為近千家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為坊子企業(yè)提供專業(yè)的網(wǎng)站設(shè)計制作、成都網(wǎng)站設(shè)計,坊子網(wǎng)站改版等技術(shù)服務(wù)。擁有10多年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
for(j=0;jargs.length;j++){
if(Integer.parseInt(args[j])Integer.parseInt(args[j+1])){
temp = args[j];
args[j] = args[j+1];
args[j+1] = temp;
}
}
這段代碼很容易理解啊,就是冒泡算法的基本思想,將待排序的元素看作是豎著排列的“氣泡”,較小的元素比較輕,從而要往上浮。在冒泡排序算法中我們要對這個“氣泡”序列處理若干遍。所謂一遍處理,就是自底向上檢查一遍這個序列,并時刻注意兩個相鄰的元素的順序是否正確。如果發(fā)現(xiàn)兩個相鄰元素的順序不對,即“輕”的元素在下面,就交換它們的位置。顯然,處理一遍之后,“最輕”的元素就浮到了最高位置;處理二遍之后,“次輕”的元素就浮到了次高位置。在作第二遍處理時,由于最高位置上的元素已是“最輕”元素,所以不必檢查。一般地,第i遍處理時,不必檢查第i高位置以上的元素,因為經(jīng)過前面i-1遍的處理,它們已正確地排好序。
冒泡排序(Bubble Sort)是一種簡單的排序算法。它重復(fù)地走訪過要排序的數(shù)列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數(shù)列的工作是重復(fù)地進(jìn)行直到?jīng)]有再需要交換,也就是說該數(shù)列已經(jīng)排序完成。這個算法的名字由來是因為越小的元素會經(jīng)由交換慢慢“浮”到數(shù)列的頂端。
冒泡排序算法的運作如下:
比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。
對每一對相鄰元素作同樣的工作,從開始第一對到結(jié)尾的最后一對。在這一點,最后的元素應(yīng)該會是最大的數(shù)。
針對所有的元素重復(fù)以上的步驟,除了最后一個。
持續(xù)每次對越來越少的元素重復(fù)上面的步驟,直到?jīng)]有任何一對數(shù)字需要比較。
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++){????//對當(dāng)前無序區(qū)間score[0......length-i-1]進(jìn)行排序(j的范圍很關(guān)鍵,這個范圍是在逐步縮小的)??
if(score[j]??score[j?+?1]){????//把小的值交換到后面??
int?temp?=?score[j];??
score[j]?=?score[j?+?1];??
score[j?+?1]?=?temp;??
}??
}??????????????
System.out.print("第"?+?(i?+?1)?+?"次排序結(jié)果:");??
for(int?a?=?0;?a??score.length;?a++){??
System.out.print(score[a]?+?"\t");??
}??
System.out.println("");??
}??
System.out.print("最終排序結(jié)果:");??
for(int?a?=?0;?a??score.length;?a++){??
System.out.print(score[a]?+?"\t");??
}??
}??
}
方法一: package basic.javastu; public class NumberTest {
/** * 實現(xiàn)冒泡程序1 */ public static void main(String[] args) { // TODO Auto-generated method stub
int[] numb=new int[]{3,42,57,1,32,24};
int len=numb.length;
int i,j;
int temp;
System.out.println("排序前的數(shù)組各個值:");
for(i=0;ilen;i++)
{
System.out.print(numb[i]+"\t");
}
System.out.println("\n");
for(i=1;i=len;i++)
{
for(j=len-1;j=1;j--)
{
if(numb[j]numb[j-1])
{
temp=numb[j];
numb[j]=numb[j-1];
numb[j-1]=temp;
}
}
}
System.out.println("排序后的數(shù)組各個值:");
for(i=0;ilen;i++)
{
System.out.print(numb[i]+"\t");
}
}
}
方法二: package basic.javastu; public class NumberTest2 {
/** * 實現(xiàn)冒泡程序2 */ public static void main(String[] args) { // TODO Auto-generated method stub
int[] numb=new int[]{3,42,57,1,32,24};
int leng=numb.length;
System.out.println("排序前的數(shù)組各個值:");
for(int i=0;ileng;i++)
{
System.out.print(numb[i]+"\t");
}
System.out.println("\n");
swap(numb);
System.out.println("數(shù)組排序后:"); for(int i=0;ileng;i++)
{
System.out.print(numb[i]+"\t");
} }
private static int[] swap(int[] numb) { int n2[]=numb; int len=n2.length; int i,j; int temp; for(i=1;i=len;i++)
{
for(j=len-1;j=1;j--)
{
if(n2[j]n2[j-1])
{
temp=n2[j];
n2[j]=n2[j-1];
n2[j-1]=temp;
}
}
} return n2; } }
方法三: package basic.javastu; public class NumberTest3 {
/** * 實現(xiàn)冒泡程序2 */ public static void main(String[] args) { // TODO Auto-generated method stub
int[] numb=new int[]{3,42,57,1,32,24};
int leng=numb.length;
System.out.println("排序前的數(shù)組各個值:");
for(int i=0;ileng;i++)
{
System.out.print(numb[i]+"\t");
}
System.out.println("\n");
swap(numb);
System.out.println("數(shù)組排序后:"); for(int i=0;ileng;i++)
{
System.out.print(numb[i]+"\t");
} }
private static void swap(int[] numb) { int len=numb.length; int i,j; int temp; for(i=1;i=len;i++)
{
for(j=len-1;j=1;j--)
{
if(numb[j]numb[j-1])
{
temp=numb[j];
numb[j]=numb[j-1];
numb[j-1]=temp;
}
}
} } }
冒泡排序是比較經(jīng)典的排序算法。代碼如下:
for(int i=1;iarr.length;i++){
for(int j=1;jarr.length-i;j++){
//交換位置
} ? ?
拓展資料:
原理:比較兩個相鄰的元素,將值大的元素交換至右端。
思路:依次比較相鄰的兩個數(shù),將小數(shù)放在前面,大數(shù)放在后面。即在第一趟:首先比較第1個和第2個數(shù),將小數(shù)放前,大數(shù)放后。然后比較第2個數(shù)和第3個數(shù),將小數(shù)放前,大數(shù)放后,如此繼續(xù),直至比較最后兩個數(shù),將小數(shù)放前,大數(shù)放后。重復(fù)第一趟步驟,直至全部排序完成。
第一趟比較完成后,最后一個數(shù)一定是數(shù)組中最大的一個數(shù),所以第二趟比較的時候最后一個數(shù)不參與比較;
第二趟比較完成后,倒數(shù)第二個數(shù)也一定是數(shù)組中第二大的數(shù),所以第三趟比較的時候最后兩個數(shù)不參與比較;
依次類推,每一趟比較次數(shù)-1;
??
舉例說明:要排序數(shù)組:int[]?arr={6,3,8,2,9,1};?
for(int i=1;iarr.length;i++){
for(int j=1;jarr.length-i;j++){
//交換位置
} ? ?
參考資料:冒泡排序原理
文章名稱:java冒泡的代碼 java冒泡算法
地址分享:http://jinyejixie.com/article20/dosgpjo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈、手機網(wǎng)站建設(shè)、網(wǎng)站收錄、品牌網(wǎng)站制作、網(wǎng)站維護(hù)、域名注冊
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)