// 冒泡排序
void func_bubble_sort(int arr[], int l, int r)
{
int i;
int j;
int temp;
//for optimize 1
int flag_swap;
//for optimize 2
int n;
int pos = 0;
for ( j = 0; j < r-l+1; ++j )
{
flag_swap = 0;
if ( 0 == pos )
{
n = r-j;
}
else
{
n = pos;
}
//for ( i = l; i < r-j; ++i )
for ( i = l; i < n; ++i )
{
if ( arr[i] > arr[i+1] )
{
temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
flag_swap = 1;
pos = i;
}
}
if ( 0 == flag_swap )
{
return;
}
}
}
// 直接选择排序
void func_select_sort(int arr[], int l, int r)
{
int i = 0;
int j = 0;
int tmp = 0;
int min_pos;
for ( i = l; i < r; ++i )
{
min_pos = i;
for ( j = i+1; j <= r; ++j )
{
if ( arr[j] < arr[min_pos] )
{
min_pos = j;
}
/*
if ( arr[i] > arr[j] )
{
tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
*/
}
tmp = arr[i];
arr[i] = arr[min_pos];
arr[min_pos] = tmp;
}
}
// 直接插入排序
void func_insert_sort(int arr[], int l, int r)
{
int i = l;
int j;
int temp;
while ( i < r )
{
j = i+1;
temp = arr[j];
while ( j > l )
{
if ( temp < arr[j-1] )
{
arr[j] = arr[j-1];
}
else
{
break;
}
j--;
}
arr[j] = temp;
i++;
}
}