C# 中的插入排序
csharpprogrammingserver side programming更新于 2025/7/5 11:07:17
插入排序是一种排序算法,它每次取出一个元素,并将其插入到数组的正确位置。此过程持续进行,直到数组排序完成。
以下是一段 C# 插入排序的演示程序。
示例
using System;
namespace InsertionSortDemo {
class Example {
static void Main(string[] args) {
int[] arr = new int[10] { 23, 9, 85, 12, 99, 34, 60, 15, 100, 1 };
int n = 10, i, j, val, flag;
Console.WriteLine("Insertion Sort");
Console.Write("Initial array is: ");
for (i = 0; i < n; i++) {
Console.Write(arr[i] + " ");
}
for (i = 1; i < n; i++) {
val = arr[i];
flag = 0;
for (j = i - 1; j >= 0 && flag != 1; ) {
if (val < arr[j]) {
arr[j + 1] = arr[j];
j--;
arr[j + 1] = val;
}
else flag = 1;
}
}
Console.Write("
Sorted Array is: ");
for (i = 0; i < n; i++) {
Console.Write(arr[i] + " ");
}
}
}
}
输出
上述程序的输出如下。
Insertion Sort Initial array is: 23 9 85 12 99 34 60 15 100 1 Sorted Array is: 1 9 12 15 23 34 60 85 99 100
现在,让我们理解一下上面的程序。
首先,初始化数组,并使用 for 循环打印其值。这可以在以下代码片段 − 中看到。
int[] arr = new int[10] { 23, 9, 85, 12, 99, 34, 60, 15, 100, 1 };
int n = 10, i, j, val, flag;
Console.WriteLine("Insertion Sort");
Console.Write("Initial array is: ");
for (i = 0; i < n; i++) {
Console.Write(arr[i] + " ");
}
实际排序过程使用嵌套的 for 循环。在外层 for 循环的每次循环中,当前元素都会插入到数组中的正确位置。此过程持续进行,直到数组排序完成。以下代码片段可帮助您理解。
for (i = 1; i < n; i++) {
val = arr[i];
flag = 0;
for (j = i - 1; j <= 0 && flag != 1; ) {
if (val < arr[j]) {
arr[j + 1] = arr[j];
j--;
arr[j + 1] = val;
} else flag = 1;
}
}
最后,显示排序后的数组。如以下代码片段所示。
Console.Write("
Sorted Array is: ");
for (i = 0; i < n; i++) {
Console.Write(arr[i] + " ");
}

