冒泡排序:数组
class common_sort
{
private int[] Array = new int[]{1,5,9,86,45,56,15};
public common_sort()
{
exe_popupsort();
for(int i = 0;i < Array.length; i++)
{
System.out.println(Array[i]);
}
}
private void exe_popupsort()
{
int exchange = 0;
for(int i = Array.length - 1; i >0 ; i--)
{
for(int j = 0; j<i; j++)
{
if(Array[j] > Array[j+1])
{
exchange = Array[j];
Array[j] = Array[j+1];
Array[j+1] = exchange;
}
}
}
}
}排序
时间复杂度分析:class
时间复杂度其实就是if语句的执行次数,计算if语句的执行次数能够采用逆序数的方法来计算;逆序数的定义以下:方法
在一个排列中,若是一对数的先后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序。一个排列中逆序的总数就称为这个排列的逆序数。逆序数为偶数的排列称为偶排列;逆序数为奇数的排列称为奇排列。如2431中,21,43,41,31是逆序,逆序数是4,为偶排列。 sort
也是就说,对于n个不一样的元素,先规定各元素之间有一个标准次序(例如n个 不一样的天然数,可规定从小到大为标准次序),因而在这n个元素的任一排列中,当某两个元素的前后次序与标准次序不一样时,就说有1个逆序。一个排列中全部逆序总数叫作这个排列的逆序数。di
对于冒泡排序来讲,每一次if 语句的执行就是消除了一个逆序,直到该数组的逆序为0,那么排序结束;数列2431的逆序数是4,该数列反向排列即1342,逆序数为2,Cn2就是两个排列的逆序之和,任意排列的出现几率为50%,因此逆序数应该计算为Cn2/2,因此时间复杂度是O(n2);时间