冒泡排序:
對(duì)未排序的數(shù)組中的元素從頭到尾依次比較相鄰的兩個(gè)元素,若第前一個(gè)元素大于后面一個(gè)元素那么就交換兩個(gè)元素
的位置,經(jīng)過一輪的比較,那么最大的那個(gè)元素,會(huì)存到數(shù)組的最后一位,每比較一次就會(huì)有一個(gè)正確的數(shù)字放到正確的位置
例如: 6,4,9,1,3 --> 升序
4,6,1,3,9 -->一輪排序
4,1,3,6,9 -->二輪排序
1,3,4,6,9 --> 三輪排序
1,3,4,6,9 --> 四輪排序
1,3,4,6,9 --> 五輪排序
public class MaoPaoSortArray {
public static void main(String[] args) {
//創(chuàng)建數(shù)組
int[] arr = new int[10];
//向數(shù)組中隨機(jī)存儲(chǔ)0-100之間的值
for(int i = 0; i<arr.length;i++) {
arr[i] = (int)(Math.random()*100);
}
//打印沒有排序之前數(shù)組值
//對(duì)數(shù)組進(jìn)行排序操作
//1.數(shù)組中所有的元素都需要進(jìn)行一次比較,所以通過循環(huán)滿足每一個(gè)元素比較
for(int i = 0 ;i<arr.length;i++) {
//控制比較次數(shù)
//arr.length-1的目的是為了方式數(shù)組下標(biāo)越界異常 原因在于 j+1 會(huì)到大數(shù)組的長(zhǎng)度
//-i隨著比較次數(shù)的逐漸增多,每一次都會(huì)有一個(gè)正確數(shù)放到正確的位置,那么通過-i操作
//減少當(dāng)前需要排序的元素個(gè)數(shù)
for(int j = 0; j<arr.length-1-i;j++) {
//具體元素的比較
if(arr[j] > arr[j+1]) {
//交換
int tmp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = tmp; }
}
System.out.print("第"+(i+1)+"次排序的結(jié)果:\t");
for(int m = 0;m<arr.length;m++) {
System.out.print(arr[m]+"\t");
}
System.out.println();
}
}
}