冒泡排序是一种基础的排序方式。冒泡排序的基本思想是每次排序都将当前待排序的数据中的最大(最小)的数据放置在数据末尾,依次循环,直到所有数据有序。
每一趟只能确定将一个数归位。即第一趟只能确定将末位上的数归位,第二趟只能将倒数第 2 位上的数归位,依次类推下去。如果有 n 个数进行排序,只需将 n-1 个数归位,也就是要进行 n-1 趟操作。
最差情况下,数组逆序,时间复杂度为:O( n^2 );
平均的时间复杂度为:O( n^2 );
最优的情况,数组已经排序,则空间复杂度为:0;
最差情况 ,数组开始元素逆序排序,则空间复杂度为:O(n);
平均的空间复杂度为:O(1);
package Bubble;
public class BubbleSort {
public static void main(String[] args) {
// TODO Auto-generated method stub
//创建一个乱序数组。
int[] array={63,4,24,1,3,15};
//创建冒泡排序类的实例;
BubbleSort sorter=new BubbleSort();
sorter.Sort(array);
}
/**
* 冒泡排序算法
* @param array 需要排序的数组
*/
public void Sort(int[] array)
{
for(int i=1;i<array.length;i++)
{
for(int j=0;j<array.length-i;j++)
{
if(array[j]>array[j+1])
{
int temp=array[j];
array[j]=array[j+1];
array[j+1]=temp;
}
}
}
ShowArray(array);
}
/**
* 打印数组数字
* @param array
*/
public void ShowArray(int[] array)
{
for(int i:array)
{
System.out.print(i+" ");
}
System.out.println();
}
}