冒泡排序及其优化
冒泡排序优化3
public static void sort(int array[])
{
int lastExchangeIndex = 0;
int sortBorder = array.length - 1;
for(int i = 0; i < array.length - 1; i++)
{
bool isSorted = true;
for(int j = 0; j < sortBorder; j++)
{
if(array[j] > array[j + 1])
{
int temp = array[j];
array[j] = array[j+1];
array[j + 1] = temp;
lastExchangeIndex = j;
isSorted = false;/有元素进行交换,不是有序的
}
}
sortBorder = lastExchangeIndex;
if(isSorted)
break;
}
}
鸡尾酒排序(冒泡排序的优化,大部分元素已经有序)
public static void sort(int array[])
{
for(int i = 0; i < array.length / 2; i++)
{
bool isSorted = true;
for(int j = i; j < array.length - 1 - i; j++)
{
if(array[j] > array[j + 1])
{
int temp = array[j];
array[j] = array[j+1];
array[j + 1] = temp;
isSorted = false;/有元素进行交换,不是有序的
}
}
if(isSorted)
break;
isSorted = true;
for(int j = array.length - 1 - i; j > i; j--)
{
if(array[j] < array[j - 1])
{
int temp = array[j];
array[j] = array[j - 1];
array[j - 1] = temp;
isSorted = false;/有元素进行交换,不是有序的
}
}
if(isSorted)
break;
}
}