排序

/**
 * @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 ;
}

 

原文地址:https://www.cnblogs.com/archmage01/p/11688061.html