C#選擇排序(Selection Sort)演演算法

2023-07-20 06:00:22

選擇排序原理介紹

選擇排序(Selection Sort)是一種簡單的排序演演算法,其實現原理如下:

  1. 遍歷待排序陣列,從第一個元素開始。
  2. 假設當前遍歷的元素為最小值,將其索引儲存為最小值索引(minIndex)。
  3. 在剩餘的未排序部分中,找到比當前最小值還要小的元素,並更新最小值索引。
  4. 在遍歷結束後,將找到的最小值與當前遍歷位置的元素進行交換。
  5. 重複步驟2到4,直到排序完成。

C#程式碼實現


        /// <summary>
        /// 選擇排序演演算法
        /// </summary>
        public static void SelectionSortAlgorithmMain()
        {
            int[] array = { 64, 25, 12, 22, 11, 99, 3, 100 };

            Console.WriteLine("原始陣列: ");
            PrintArray(array);

            SelectionSortAlgorithm(array);

            Console.WriteLine("排序後的陣列: ");
            PrintArray(array);
        }

        static void SelectionSortAlgorithm(int[] arr)
        {
            int n = arr.Length;

            for (int i = 0; i < n - 1; i++)
            {
                // 在未排序部分中找到最小元素的索引
                int minIndex = i;
                for (int j = i + 1; j < n; j++)
                {
                    if (arr[j] < arr[minIndex])
                    {
                        minIndex = j;
                    }
                }

                // 將最小元素與未排序部分的第一個元素交換位置
                int temp = arr[minIndex];
                arr[minIndex] = arr[i];
                arr[i] = temp;
            }
        }

        static void PrintArray(int[] arr)
        {
            int n = arr.Length;
            for (int i = 0; i < n; ++i)
            {
                Console.Write(arr[i] + " ");
            }
            Console.WriteLine();
        }

總結

選擇排序演演算法的時間複雜度為O(n^2),其中n是待排序陣列的大小。儘管其時間複雜度較高,但選擇排序演演算法比較簡單易懂,並且在某些特定情況下,例如對於小規模的陣列來說,其效能可能表現得比其他高階排序演演算法要好。