冒泡排序:
?
- 原理: 將關鍵字較小的值不斷地上浮,將關鍵字值較大的不斷下沉;
- 時間復雜度:O(n^2)
- 空間復雜度:最優(即已經排好序)為0,平均空間復雜度為O(1);
- 核心代碼:
?
for(int i=0;i<n;i++){
for(int j=i;j<n;j++){
if(num[i]>num[j]){//數值較大的數進行交換下沉
int temp;
temp=num[i];
num[i]=num[j];
num[j]=temp;
}
}
}
【Java實現完整代碼】
?
package paixu;?
?
/**?
?
* @author xpengfei?
?
*/?
?
import java.util.Scanner;?
?
/*?
?
* 效率最低的冒泡排序?
?
* 說明冒泡排序的時間復雜度符合O(n^2)。?
?
*??
?
* 時間復雜度,最優與最差都需要[n*(n-1) ] / 2次比較,所以時間復雜度為O(n^2).?
?
* 空間復雜度,最優即已排好序,空間復雜度為0;平均空間復雜度為O(1)。?
?
*/?
?
public class sortOne {?
?
Scanner input=new Scanner(System.in);?
?
private int[]num;//存放隨機數數組?
?
private int n;//待輸入的數組規模n?
?
public sortOne(){//構造函數,初始化數組;?
?
System.out.println("請輸入數組大小N的值:");?
?
n=input.nextInt();?
?
num=new int[n];?
?
System.out.println("隨機生成的數組如下:");?
?
for(int i=0;i<n;i++){?
?
num[i]=(int)(Math.random()*1000);?
?
System.out.println(num[i]);?
?
}?
?
}?
?
public void sort(){//冒泡排序核心算法?
?
for(int i=0;i<n;i++){?
?
for(int j=i;j<n;j++){?
?
if(num[i]>num[j]){//數值較大的數進行交換下沉?
?
int temp;?
?
temp=num[i];?
?
num[i]=num[j];?
?
num[j]=temp;?
?
}?
?
}?
?
}?
?
}?
?
public void displayResult(){//該函數將排好序的數組進行有序輸出?
?
System.out.println("數組排序后的結果為:");?
?
for(int i=0;i<n;i++){?
?
System.out.println(num[i]);?
?
}?
?
}?
?
public static void main(String []args){?
?
sortOne sone=new sortOne();?
?
sone.sort();?
?
sone.displayResult();?
?
}?
?
}?
?
?
?