冒泡排序算法:
成都創(chuàng)新互聯(lián)專注于許昌企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè)公司,商城建設(shè)。許昌網(wǎng)站建設(shè)公司,為許昌等地區(qū)提供建站服務(wù)。全流程專業(yè)公司,專業(yè)設(shè)計,全程項目跟蹤,成都創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)
int類型的數(shù)組:3 1 6 2 5
第一次循環(huán):
1 3 6 2 5
1 3 6 2 5
1 3 2 6 5
1 3 2 5 6
第二次循環(huán):
1 3 2 5
1 2 3 5
1 2 3 5
第三次循環(huán):
1 2 3
1 2 3
。。。
算法:取出最大的放在最后,下次就不用比較最后一個了。*/
public?class?BubbleSort{
public?static?void?main(String[]?args){
int[]?a?=?{3,1,6,2,5};
//開始排序
for(int?i=a.length-1;i0;i--){
for(int?j=0;ji;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;ia.length;i++){
System.out.println(a[i]);
}
}
}
你這樣寫,相當(dāng)于只冒了一次泡,把最大的一個數(shù),也就是最后一個數(shù),找出來了,冒泡排序是要for循環(huán)里在嵌套一個for循環(huán)才能做出來的,外面的for循環(huán)控制冒泡多少次,里面的循環(huán)找出每次的最大值。你這樣寫少了外面的那個for循環(huán),相當(dāng)于只找了一次最大值。
代碼:
public class test {
private static void sort(Integer arr[], int n) {
if (n = 1) return; ? ? ? //如果只有一個元素就不用排序了
for (int i = 0; i n; ++i) {
// 提前退出冒泡循環(huán)的標(biāo)志位,即一次比較中沒有交換任何元素,這個數(shù)組就已經(jīng)是有序的了
boolean flag = false;
for (int j = 0; j n - i - 1; ++j) { ? ? ? ?//此處你可能會疑問的jn-i-1,因為冒泡是把每輪循環(huán)中較大的數(shù)飄到后面,
// 數(shù)組下標(biāo)又是從0開始的,i下標(biāo)后面已經(jīng)排序的個數(shù)就得多減1,總結(jié)就是i增多少,j的循環(huán)位置減多少
if (arr[j] arr[j + 1]) { ? ? ? ?//即這兩個相鄰的數(shù)是逆序的,交換
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
flag = true;
}
}
if (!flag) break;//沒有數(shù)據(jù)交換,數(shù)組已經(jīng)有序,退出排序
}
}
public static void main(String[] args) {
Integer arr[] = {2, 6, 3, 67, 54};
sort(arr, arr.length);
System.out.println("冒泡排序后的數(shù)組為");
for (Integer i : arr) {
System.out.println(i);
}
}
}
方法一: 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;
}
}
} } }
純手工,隨意寫的,希望對你有幫助!!
public class MaoPao{
//定義一個整形數(shù)組
int[] a = new int[10];
//中間數(shù)
int flag = 0;
//g給數(shù)組賦值
a = {14,12,21,52,36,78,45,31,33,98};
//判斷
for(int i=0;ia.length;i++){
for(int j=i+1;ia.length;i++){
//交換位置,最大的放第一個
if(a[i]a[j]){
flag = a[i];
a[i] = a[j];
a[j] = a[i];
}
}
}
//輸出數(shù)組
for(int i=0;ia.length;i++){
System.out.println(a[i]);
}
}
public?class?Test?{
public?static?void?main(String[]?args)?{
int[]?a?=?{1,?8,?5,?2,?4,?9};
//冒泡排序
for?(int?k?=?0;?k??a.length?-?1;?k++)?{
for?(int?j?=?k?+?1;?j??a.length;?j++)?{?//?升序把改成
if?(a[k]??a[j])?{
int?temp?=?a[k];
a[k]?=?a[j];
a[j]?=?temp;
}
}
}
System.out.println("排序后:?");
for(int?i?=?0;?i??a.length;?i++){
System.out.print(a[i]?+?"??");
}
}
}
當(dāng)前名稱:排序java代碼,快速排序java代碼
當(dāng)前URL:http://chinadenli.net/article30/heejpo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號、動態(tài)網(wǎng)站、服務(wù)器托管、、App開發(fā)、軟件開發(fā)
聲明:本網(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)