/**
* @brief 插入排序类似于打扑克,取出未排序的一张牌插入到已排序的牌中
* 取出的一张牌是在已排序好的牌中从后向前查找,直到查找到比当前牌小的那个位置,然后插入进去
*
*/
/*- 直接插入排序 */
vector<unsigned int> Sort::insert_sort( vector<unsigned int> &test , unsigned int len )
{
unsigned int i = 0 , j = 0 ;
for( i = 1 ; i< len ; i++ )
{
unsigned int temp = test[i] ; //待排序元素
j = i ; //已经排序个数
while(j>0 && temp < test[j-1] )
{
test[j] = test[j-1] ;
j = j -1 ;
}
test[j] = temp ;
}
return test ;
}
/**
* @brief 冒泡排序 交换相邻数据 将最大值冒泡至最右边
*/
vector<unsigned int> Sort::bubble_sort( vector<unsigned int> &test , unsigned int len )
{
unsigned int i = 0 , j = 0 ;
for( i = 0 ; i< len -1 ; i++ )
{
for( j = 0 ; j< len-i-1 ; j++ )
{
if(test[j] > test[j+1])
{
swap(test[j], test[j+1] );
}
}
}
return test ;
}
/**
* @brief 选择排序 每一轮选出记录最小的数据放最左边(未排序)
*/
vector<unsigned int> Sort::select_sort( vector<unsigned int> &test , unsigned int len )
{
unsigned int i = 0 , j = 0 ;
for( i = 0 ; i< len -1 ; i++ )
{
unsigned int min = i ;
for( j = i ; j< len ; j++ )
{
if( test[min] > test[j] )
{
min = j ;
}
}
swap(test[i] , test[min] ) ;
}
return test ;
}