现在的位置: 首页 > 算法 > 正文

C#排序算法小结

2019年12月31日 算法 ⁄ 共 725字 ⁄ 字号 评论关闭

  算法这个东西其实在开发中很少用到,特别是web开发中,但是算法也很重要,因为任何的程序,任何的软件,都是由很多的算法和数据结构组成的。但是这不意味着算法对于每个软件设计人员的实际工作都是很重要的。每个项目特点和需求特殊也导致算法运用场景上不同。但是个人觉得算法运用的好的话会给自己在程序设计的时候提供比较好的思路。下面就对一些排序算法小结一下,就当做自己的一个笔记吧。

插入排序算法简介

  插入排序(InsertionSort)的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。

插入排序算法描述

  一般来说,插入排序都采用in-place在数组上实现。具体算法描述如下:

  1.从第一个元素开始,该元素可以认为已经被排序

  2.取出下一个元素,在已经排序的元素序列中从后向前扫描

  3.如果该元素(已排序)大于新元素,将该元素移到下一位置

  4.重复步骤3,直到找到已排序的元素小于或者等于新元素的位置

  5.将新元素插入到该位置后

  6.重复步骤2~5

  如果比较操作的代价比交换操作大的话,可以采用二分查找法来减少比较操作的数目。该算法可以认为是插入排序的一个变种,称为二分查找排序。

  使用插入排序为一列数字进行排序的过程

  最差时间复杂度O(n^{2})

  最优时间复杂度O(n)

  平均时间复杂度O(n^{2})

  结束语:以上就是关于C#排序算法小结的全部内容,更多内容请关注学步园。

抱歉!评论已关闭.