Bubble Sort:相邻的元素两两比较,根据大小来交换元素的位置,一般是大的下沉,小的上浮。
原始的冒泡排序是稳定排序,时间复杂度是O(N^2)。
void BubbleSortK(int arry[], int n) {
int temp;
for (int i = 0; i < n; i++)
for (int j = 0; j < n - i - 1; j++)
{
if (arry[j] > arry[j + 1])
{
temp = arry[j];
arry[j] = arry[j + 1];
arry[j + 1] = temp;
}
}
}
改进版:
void BubbleSortK(int arry[]) {
int temp;
bool flag = true;
for (int i = 0; i < n; i++)
for (int j = 0; j < n - i - 1; j++)
{
if (arry[j] > arry[j + 1])
{
flag = false;
temp = arry[j];
arry[j] = arry[j + 1];
arry[j + 1] = temp;
}
if(flag)
break;
}
}
进一步改进:
void BubbleSortK(int arry[], int n) {
int temp, last = n-1, laste=0;
for(int i=0; i<n; i++)
{
bool flag = true;
for(int j=0; j<last; j++)
{
if(arry[j] > arry[j+1])
{
flag = false;
laste = j;
temp = arry[j];
arry[j] = arry[j+1];
arry[j+1] = temp;
}
}
last = laste;
if(flag)
break;
}
}