Sắp xếp chèn (Insertion Sort) trong C#



Bài tập C#: Sắp xếp chèn (Insertion Sort)

Viết chương trình C# minh họa giải thuật Sắp xếp chèn (Insertion Sort)

Sắp xếp chèn (Insertion Sort) là một giải thuật sắp xếp dựa trên so sánh in-place. Ở đây, một danh sách con luôn luôn được duy trì dưới dạng đã qua sắp xếp. Sắp xếp chèn là chèn thêm một phần tử vào danh sách con đã qua sắp xếp. Phần tử được chèn vào vị trí thích hợp sao cho vẫn đảm bảo rằng danh sách con đó vẫn sắp theo thứ tự.

Để tham khảo chi tiết về lý thuyết cũng như hình ảnh minh họa cho giải thuật Sắp xếp chèn (Insertion Sort), mời bạn tham khảo chương: Sắp xếp chèn (Insertion Sort) trong C có trên trang của chúng mình.

Chương trình C#

Dưới đây là chương trình C# minh họa giải thuật Sắp xếp chèn (Insertion Sort) trong C#:

using System;namespace VietJackCsharp
{
    class TestCsharp
    {
        static void Main(string[] args)
        {            Console.WriteLine("\nSap xep chen (Insertion Sort) trong C#:");
            Console.WriteLine("----------------------------------------");            int[] numbers = new int[10] {2, 5, -4, 11, 0, 18, 22, 67, 51, 6};  
            Console.WriteLine("\nMang cac phan tu ban dau:");  
            PrintIntegerArray(numbers);  
            Console.WriteLine("\nMang cac phan tu da qua sap xep:");  
            PrintIntegerArray(InsertionSort(numbers));  
            Console.WriteLine("\n");
            Console.ReadKey();
            }  
  
        static int[] InsertionSort(int[] inputArray)  
        {  
            for (int i = 0; i < inputArray.Length - 1; i++)  
            {  
                for (int j = i + 1; j > 0; j--)  
                {  
                    if (inputArray[j - 1] > inputArray[j])  
                    {  
                        int temp = inputArray[j - 1];  
                        inputArray[j - 1] = inputArray[j];  
                        inputArray[j] = temp;  
                    }  
                  }  
            }  
            return inputArray;           
        }          public static void PrintIntegerArray(int[] array)  
        {  
            foreach (int i in array)  
            {  
                Console.Write(i.ToString() + "  ");  
            }  
         }  
  
         
        public static int[] InsertionSortByShift(int[] inputArray)  
        {  
            for (int i = 0; i < inputArray.Length - 1; i++)  
            {  
                int j;  
                var insertionValue = inputArray[i];  
                for (j = i; j > 0; j--)  
                {  
                    if (inputArray[j - 1] > insertionValue)  
                    {  
                        inputArray[j] = inputArray[j - 1];  
                    }  
                }  
                inputArray[j] = insertionValue;  
            }  
            return inputArray;  
        }  
            
    }
}

Nếu bạn không sử dụng lệnh Console.ReadKey(); thì chương trình sẽ chạy và kết thúc luôn (nhanh quá đến nỗi bạn không kịp nhìn kết quả). Lệnh này cho phép chúng ta nhìn kết quả một cách rõ ràng hơn.

Kết quả chương trình C#

Biên dịch và chạy chương trình C# trên sẽ cho kết quả:

Sắp xếp chèn (Insertion Sort) trong C#
bai-tap-sap-xep-trong-csharp.jsp