首頁

目前文章總數:157 篇

  

最後更新:2024年 12月 07日

0013. 侏儒排序法(Gnome Sort)-不穩定排序

日期:2023年 03月 25日

標籤: Algorithm Sort NoParactical Algorithm C# Asp.NET Core

摘要:演算法-排序


時間複雜度(Time Complex): O(n^2)
空間複雜度(Space Complex): O(1)
最佳時間: O(n)
最壞時間: O(n^2)
範例檔案:Source Code
範例專案:Code Project
基本介紹:本篇分為3大部分。
第一部分:侏儒排序法 - 介紹
第二部分:圖解範例說明
第三部分:代碼






第一部分:侏儒排序法 - 介紹

Step 1:原理

給定一組可比較陣列
1. 遍歷每個元素
2. 遍歷時將此元素以前(包含此元素)的所有元素做排序
3. 完成排序
※補充:多此一舉的作法,泡沫排序中用遍歷包裝

Step 2:演算法流程圖




第二部分:圖解範例說明

Step 1:以整數陣列為例

初始內有3個值


第三部分:代碼

Step 1:侏儒排序法代碼 - 呼叫進入點

輸入一組數列 inputItem 求出 result


public void Execute()
{
    List<int> inputItem = new() { 92, 17, 38, 59, 26, 39 };
    var gnomeSort = new GnomeSort<int>();
    var result = gnomeSort.GnomeAscendingSorting(inputItem);
}



Step 2:侏儒排序法代碼 - 主程式

主要三個流程
1. 輸入陣列
2. 遍歷每個元素,遍歷時將此元素以前(包含此元素)的所有元素做排序
3. 完成


public class GnomeSort<T> where T : IComparable
{
    public List<T> GnomeAscendingSorting(List<T> items)
    {
        T temp;
        for (int index = 0; index < items.Count(); index++)
        {
           
            for (int innerIndex = 0; innerIndex < index + 1; innerIndex++)
            {
                if (items[index].CompareTo(items[innerIndex]) < 0)
                {
                    temp = items[index];
                    items[index] = items[innerIndex];
                    items[innerIndex] = temp;
                }
            }
        }        
        return items;
    }
}