冒泡排序

1 算法原理
元素依次兩兩比較,大的數日後浮出,那麼第一趟當n-2與n-1比較後,最大的數即浮到最後一個位置。
第二趟,當n-3與n-2比較時,第二大的數即浮到倒數第二個位置。
最後一趟,當0與1向比較的時候,最小的和第二小的數肯定。
冒泡排序時間複雜度爲O(n^2),速度比較慢。當數組長度爲10萬時,就耗時一分鐘了。
冒泡排序是穩定排序,相等的元素,排序以後, 相對位置不會變化。
2 示例代碼
/**
* @brief - sort an array by bubble sort
* @param[in, out] array - pointer of the array [not null]
* @param[in] size - size of the array [>0]
* @retval 0 - succeed
* @retval -1 - fail
*/
int bubble_sort(int *array, int size)
{
    if ((NULL == array)
        || (size < 1))
    {
        return -1;
    }
    
    if (1 == size)
    {
        return 0;
    }
    
    int i = 0;
    int j = 0;
    int tmp = 0;
  
    // 須要進行size-1趟排序
    // 第一趟須要比較到size -2這個索引位置(即size-2與size-1兩個位置比較)
    // 最後一趟須要比較到0索引位置(即0與1兩個位置比較)
    for (i = size - 2; i >= 0; --i)
    {
        for (j = 0; j <= i; ++j)
        {
            // 大的日後冒泡
            if (array[j] > array[j + 1])
            {
                tmp = array[j];
                array[j] = array[j + 1];
                array[j + 1] = tmp;
            }
        }
    }
    
    return 0;
}
相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息