博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
算法:插入排序(Insertion Sort)
阅读量:6080 次
发布时间:2019-06-20

本文共 1996 字,大约阅读时间需要 6 分钟。

1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6  7 namespace DataStuctureStudy.Sorts 8 { 9     /// 10     /// 将数组分为两部分:已排序部分和未排序部分,对数组执行一次遍历,将遍历中的11     /// 当前元素插入到已排序的部分。12     /// 初始状态已排序部分只包括一个元素。13     /// 14     class InsertionSort
15 where T : IComparable
16 {17 private static void Swap(T[] items, int left, int right)18 {19 if (left != right)20 {21 var temp = items[left];22 items[left] = items[right];23 items[right] = temp;24 }25 }26 27 public static void Sort(T[] items)28 {29 for (30 var sortedRangeEndIndex = 1;31 sortedRangeEndIndex < items.Length;32 sortedRangeEndIndex++)33 {34 if (items[sortedRangeEndIndex].CompareTo(items[sortedRangeEndIndex - 1]) < 0)35 {36 int insertIndex = FindInsertionIndex(items, items[sortedRangeEndIndex]);37 Insert(items, sortedRangeEndIndex, insertIndex);38 }39 }40 }41 42 private static int FindInsertionIndex(T[] items, T valueToInsert)43 {44 for (var i = 0; i < items.Length; i++)45 {46 if (items[i].CompareTo(valueToInsert) > 0)47 {48 return i;49 }50 }51 52 throw new InvalidOperationException();53 }54 55 private static void Insert(T[] items, int indexInsertingFrom, int indexInsertingAt)56 {57 var temp = items[indexInsertingFrom];58 59 for (var i = indexInsertingFrom; i > indexInsertingAt; i--)60 {61 items[i] = items[i - 1];62 }63 64 items[indexInsertingAt] = temp;65 }66 }67 }

 

转载地址:http://mhqgx.baihongyu.com/

你可能感兴趣的文章
javafx for android or ios ?
查看>>
微软职位内部推荐-Senior Software Engineer II-Sharepoint
查看>>
sql 字符串操作
查看>>
【转】Android布局优化之ViewStub
查看>>
网络安全管理技术作业-SNMP实验报告
查看>>
根据Uri获取文件的绝对路径
查看>>
Flutter 插件开发:以微信SDK为例
查看>>
.NET[C#]中NullReferenceException(未将对象引用到实例)是什么问题?如何修复处理?...
查看>>
边缘控制平面Ambassador全解读
查看>>
Windows Phone 7 利用计时器DispatcherTimer创建时钟
查看>>
程序员最喜爱的12个Android应用开发框架二(转)
查看>>
vim学习与理解
查看>>
DIRECTSHOW在VS2005中PVOID64问题和配置问题
查看>>
MapReduce的模式,算法以及用例
查看>>
《Advanced Linux Programming》读书笔记(1)
查看>>
zabbix agent item
查看>>
一步一步学习SignalR进行实时通信_7_非代理
查看>>
AOL重组为两大业务部门 全球裁员500人
查看>>
字符设备与块设备的区别
查看>>
为什么我弃用GNOME转向KDE(2)
查看>>