插入排序 C#

1.

 

 1  class Program
 2     {
 3         static void Main(string[] args)
 4         {
 5             int[] iArrary = new int[] { 113361055982871234753347 };
 6             InsertionSorter ii = new InsertionSorter();
 7             ii.Sort(iArrary);
 8             for (int m = 0; m < iArrary.Length; m++)
 9                 Console.Write("{0} ", iArrary[m]);
10             Console.ReadLine();
11         }12     }


2.


  1    class InsertionSorter

 2     {
 3         /// <summary>
 4         /// 插入排序
 5         /// </summary>
 6         public void Sort(int[] list)
 7         {
 8             for (int i = 1; i < list.Length; i++)
 9             {
10                 int t = list[i];
11                 int j = i;
12                 while ((j > 0) && (list[j - 1] > t))
13                 {
14                     list[j] = list[j - 1];
15                     --j;
16                 }
17                 list[j] = t;
18             }
19         }
20     }

 

转载于:https://www.cnblogs.com/Yellowshorts/archive/2013/05/17/3083618.html

### C#插入排序算法的实现 以下是基于提供的引用内容以及专业知识所总结的关于如何用 C# 实现插入排序算法的内容。 #### 插入排序的基本原理 插入排序的核心思想是通过构建有序序列,对于未排序的数据,在已排序序列中从后向前扫描,找到相应位置并插入。这种方法类似于我们在日常生活中整理扑克牌的过程[^4]。 #### 非递归版本的插入排序代码示例 下面是一个经典的非递归方式实现的插入排序算法: ```csharp public class SortingAlgorithms { public static void InsertionSort(int[] array) { int n = array.Length; for (int i = 1; i < n; i++) { int key = array[i]; int j = i - 1; // 将大于key的元素向右移动一位 while (j >= 0 && array[j] > key) { array[j + 1] = array[j]; j--; } // 插入当前元素到正确的位置 array[j + 1] = key; } } } ``` 上述代码实现了标准的插入排序逻辑,其中 `array` 是待排序的数组。该方法的时间复杂度为 O(n²),适合处理较小规模的数据集合[^3]。 #### 使用场景演示 为了验证以上函数的功能,可以编写一个简单的测试程序来展示其效果: ```csharp using System; class Program { static void Main() { int[] numbers = { 9, 5, 1, 8, 3 }; Console.WriteLine("原始数组:"); PrintArray(numbers); SortingAlgorithms.InsertionSort(numbers); Console.WriteLine("\n排序后的数组:"); PrintArray(numbers); } private static void PrintArray(int[] array) { foreach (var item in array) { Console.Write(item + " "); } Console.WriteLine(); } } ``` 运行此程序会先显示未经排序的数组状态,随后执行排序操作并将结果输出至控制台[^2]。 #### 递归版本的插入排序代码示例 除了传统的迭代写法外,还可以采用递归来完成同样的功能。下面是具体的实现方案: ```csharp public class RecursiveSortingAlgorithms { public static void InsertionSortRecursive(int[] array, int length) { if (length <= 1) return; // 对前 n-1 个元素进行排序 InsertionSortRecursive(array, length - 1); // 把最后一个元素放到合适的位置上 int lastElement = array[length - 1]; int indexToCheck = length - 2; while (indexToCheck >= 0 && array[indexToCheck] > lastElement) { array[indexToCheck + 1] = array[indexToCheck]; indexToCheck--; } array[indexToCheck + 1] = lastElement; } } ``` 这种递归形式虽然更简洁易懂,但在性能方面可能不如循环结构高效,尤其是在大规模数据集上的表现较差[^5]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值