冒泡排序算法:

成都創新互聯專注于許昌企業網站建設,成都響應式網站建設公司,商城建設。許昌網站建設公司,為許昌等地區提供建站服務。全流程專業公司,專業設計,全程項目跟蹤,成都創新互聯專業和態度為您提供的服務
int類型的數組:3 1 6 2 5
第一次循環:
1 3 6 2 5
1 3 6 2 5
1 3 2 6 5
1 3 2 5 6
第二次循環:
1 3 2 5
1 2 3 5
1 2 3 5
第三次循環:
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]);
}
}
}
你這樣寫,相當于只冒了一次泡,把最大的一個數,也就是最后一個數,找出來了,冒泡排序是要for循環里在嵌套一個for循環才能做出來的,外面的for循環控制冒泡多少次,里面的循環找出每次的最大值。你這樣寫少了外面的那個for循環,相當于只找了一次最大值。
代碼:
public class test {
private static void sort(Integer arr[], int n) {
if (n = 1) return; ? ? ? //如果只有一個元素就不用排序了
for (int i = 0; i n; ++i) {
// 提前退出冒泡循環的標志位,即一次比較中沒有交換任何元素,這個數組就已經是有序的了
boolean flag = false;
for (int j = 0; j n - i - 1; ++j) { ? ? ? ?//此處你可能會疑問的jn-i-1,因為冒泡是把每輪循環中較大的數飄到后面,
// 數組下標又是從0開始的,i下標后面已經排序的個數就得多減1,總結就是i增多少,j的循環位置減多少
if (arr[j] arr[j + 1]) { ? ? ? ?//即這兩個相鄰的數是逆序的,交換
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
flag = true;
}
}
if (!flag) break;//沒有數據交換,數組已經有序,退出排序
}
}
public static void main(String[] args) {
Integer arr[] = {2, 6, 3, 67, 54};
sort(arr, arr.length);
System.out.println("冒泡排序后的數組為");
for (Integer i : arr) {
System.out.println(i);
}
}
}
方法一: package basic.javastu; public class NumberTest {
/** * 實現冒泡程序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("排序前的數組各個值:");
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("排序后的數組各個值:");
for(i=0;ilen;i++)
{
System.out.print(numb[i]+"\t");
}
}
}
方法二: package basic.javastu; public class NumberTest2 {
/** * 實現冒泡程序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("排序前的數組各個值:");
for(int i=0;ileng;i++)
{
System.out.print(numb[i]+"\t");
}
System.out.println("\n");
swap(numb);
System.out.println("數組排序后:"); 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 {
/** * 實現冒泡程序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("排序前的數組各個值:");
for(int i=0;ileng;i++)
{
System.out.print(numb[i]+"\t");
}
System.out.println("\n");
swap(numb);
System.out.println("數組排序后:"); 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{
//定義一個整形數組
int[] a = new int[10];
//中間數
int flag = 0;
//g給數組賦值
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];
}
}
}
//輸出數組
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]?+?"??");
}
}
}
當前名稱:排序java代碼,快速排序java代碼
當前URL:http://m.kartarina.com/article30/heejpo.html
成都網站建設公司_創新互聯,為您提供微信公眾號、動態網站、服務器托管、、App開發、軟件開發
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯