快速排序:
void Qsort( int Array[], int begin, int end )
{
int compare = Array[begin];
int left = begin;
int right = end;
if ( left >= right )
return ;
while ( left < right )
{
while ( ( left < right ) && ( Array[right] >= compare ) )
right--;
swap( Array[left], Array[right] );
while ( ( left < right ) && ( Array[left] < compare ) )
left++;
swap( Array[left], Array[right] );
}
Qsort( Array, begin, right - 1 );
Qsort( Array, right + 1, end );
}
快速排序,再优化:
void Qsort( int Array[], int begin, int end )
{
int compare = Array[begin];
int left = begin;
int right = end;
if ( left >= right )
return ;
while ( left < right )
{
while ( ( left < right ) && ( Array[right] >= compare ) )
right--;
Array[left] = Array[right];
while ( ( left < right ) && ( Array[left] < compare ) )
left++;
Array[right] = Array[left];
}
Array[left] = compare;
Qsort( Array, begin, right - 1 );
Qsort( Array, right + 1, end );
}
冒泡排序
void bubble_sort( int Array[], int nLen )
{
int i,j;
for ( i = nLen - 1; i >= 1; i-- )
{
for ( j = 0; j < i; j++ )
{
if ( Array[j] > Array[j + 1] )
{
swap( Array[j], Array[j + 1] );
}
}
}
}
学习CSDN博主“平凡的程序员”的,一种优化后的冒泡排序,不过这种算法在多次实验的情况下,优化效果不明显,反而增加了一定的时间开销。
void bubble_sort( int Array[], int nLen )
{
int i,j;
bool flag = true;
for ( i = nLen - 1; i >= 1 && flag; i-- )
{
flag = false;
for ( j = 0; j < i; j++ )
{
if ( Array[j] > Array[j + 1] )
{
swap( Array[j], Array[j + 1] );
flag = true;//利用flag标志判断是否有交换,如果没交换表示已经全部有序
}
}
}
}
插入排序:
void insert_sort( int Array[], int nLen )
{
int i,j;
for ( i = 1; i < nLen; i++ )
for ( j = i; j >= 1; j-- )
if ( Array[j] < Array[j - 1] )
swap( Array[j], Array[j - 1] );
else
break;
}
未完待续!