冒泡排序
时间复杂度为: O(n^2)
原理: 比较两个相邻的元素,将值大的元素交换至右端。
思路: 首先从数组的第一个元素开始到数组最后一个元素为止,对数组中相邻的两个元素进行比较,如果位于数组左端的元素大于数组右端的元素,则交换这两个元素在数组中的位置,将小数放前,大数放后,此时数组最右端的元素即为该数组中所有元素的最大值。接着对该数组剩下的n-1个元素进行冒泡排序,直到整个数组有序排列。
每进行一趟排序,就会少比较一次,一定程度上减少了算法的量。
代码实现:
//import java.util.Arrays;
public class 冒泡排序 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int a []= {5,4,3,2,1};
maoPao(a);
}
public static void maoPao(int []array){
int temp;//交换数据
System.out.println("\n冒泡排序:");
for(int i=1;i<array.length;i++) { //只需要比较数组元素个数减一次
for(int j=0;j<array.length-i;j++) {
if(array[j]>array[j+1]) {
temp=array[j];
array[j]=array[j+1];
array[j+1]=temp;
}
}
System.out.print("第"+i+"次:");
// System.out.println(Arrays.toString(array));
for(int j=0;j<array.length;j++) {
System.out.print(array[j]+" ");
}
System.out.println();
}
}
}