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

資料結構:C# 冒泡排序演算法實作

     編輯:關於C語言

冒泡排序原理

相鄰元素兩兩比較,大者後移,每輪將最大值「冒泡」至末端。加入 done 標誌優化:若某輪無交換則提前結束。

泛型實作

using System;

namespace BubbleSorter
{
    public class BubbleSorter
    {
        public void Sort(int[] list)
        {
            int i, j, temp;
            bool done = false;
            j = 1;
            while ((j < list.Length) && (!done))
            {
                done = true;
                for (i = 0; i < list.Length - j; i++)
                {
                    if (list[i] > list[i + 1])
                    {
                        done = false;
                        temp = list[i];
                        list[i] = list[i + 1];
                        list[i + 1] = temp;
                    }
                }
                j++;
            }
        }
    }

    public class MainClass
    {
        public static void Main()
        {
            int[] iArray = new int[] { 1, 5, 13, 6, 10, 55, 99, 2, 87, 12, 34, 75, 33, 47 };
            BubbleSorter sh = new BubbleSorter();
            sh.Sort(iArray);
            for (int m = 0; m < iArray.Length; m++)
                Console.Write("{0} ", iArray[m]);
            Console.WriteLine();
        }
    }
}

執行結果

1 2 5 6 10 12 13 33 34 47 55 75 87 99

複雜度

  • 時間:平均/最差 O(n²),最佳 O(n)(已排序)。
  • 空間:O(1) 原地排序。
  • 穩定性:穩定。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved