首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

Visual C# 常用排序演算法(三):氣泡排序雙向掃描與順序/倒序切換實作

     編輯:關於C語言

基本思想

相鄰元素兩兩比較,順序錯誤即交換,輕元素如氣泡般上浮,重元素下沉。

排序過程示範

初始:49, 38, 65, 97, 76, 13, 27, 49

第1趟: 13 上浮至頂端
第2趟: 27 上浮至次頂
...
最終: 13, 27, 38, 49, 49, 65, 76, 97

C# 實作 (支援升序/降序)

private static double[] BubbleSort(double[] array, bool ascending)
{
    if (array.Length > 0)
    {
        for (int i = array.Length - 1; i >= 0; i--)
        {
            for (int j = i - 1; j >= 0; j--)
            {
                if (CheckCondition(array[i], array[j], ascending))
                    ExchangeValue(ref array[i], ref array[j]);
            }
        }
    }
    return array;
}

private static bool CheckCondition(double a, double b, bool ascending)
{
    if (a > b) return ascending;      // a>b 時,升序需交換
    else return !ascending;           // a

效能特性

指標複雜度
時間 (最好/平均/最差)O(n) / O(n²) / O(n²)
空間O(1)
穩定性穩定

優化變體

  • 旗標優化:若某趟無交換則提前結束 (最好 O(n))
  • 雞尾酒排序:雙向交替掃描,減少「海龜」元素緩慢下沉
  • 實務建議:教學用途佳,實際專案優先使用 Array.Sort (內省排序)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved