【C# 排序】开篇

概览

 

 

 

 

 

 

 

 

 

 

 

 

 

 算法的思想

  • 穷举(枚举)算法思想;
  • 递推算法思想;
  • 递归算法思想:
  • 分治算法思想:
  • 概率算法思想;

 

算法分类

按辅助空间分类

比较排序法

比较排序法不需要太多的辅助空间

之前学习的冒泡、选择、插入、归并、快速、希尔、堆排序,都是基于比较的排序口平均时间复杂度目前最低是o(nlogn)

分配式排序法

需要比较大的辅助空间
计数排序、桶排序、基数排序,都不是基于比较的排序
它们是典型的用空间换时间,在某些时候,平均时间复杂度可以比 o(nlogn)更低

按存储位置分类

内排序:数据都在内存中,关注算法的时间空间复杂度

外排序:数据太多,无法全部放入内存,关注算法的时间空间复杂度,还要关注使读写磁盘的次数更少。内存读取磁盘100MB/s

Out-place(外排序)

如果开辟的辅助空间与问题规模有关,则是out-place。

归并排序法:需要开辟一个和原数组一样大的数组。

基数排序法:需要开篇一个多个分类目录来帮助分类。

桶排序法:同上

计数排序法法:同上

 

in-place(内排序)

冒泡排序中,为了将arr排序,借用了一个temp的临时变量,开辟了一个临时空间,这个空间是常数量,这就是。

算法的思想

  • 穷举(枚举)算法思想;
  • 递推算法思想;
  • 递归算法思想:归并、快速排序
  • 分治算法思想:合并排序、二分法查找、堆排序、快速排序
  • 概率算法思想;

 

排序指标

 

算法的稳定性:若待排序表中有两个元素R;和R;,其对应的关键字相同即keyi =keyj,且在排序前Ri仍然在Rj的前面,若使用某一排序算法排序后,Ri仍然在Rj的前面,则称这个排序算法是稳定的,否则称排序算法是不稳定的。

 稳定性定义:稳定性是指样本在排序之后不会改变相对顺序

对于基础类型来说,稳定性毫无意义

对非基础类型来说,稳定性有重要意义



 

 


学习工具

https://www.cs.usfca.edu/~galles/visualization/ComparisonSort.html

排序法

插入排序法

希尔排序法

posted @ 2022-06-11 18:16  小林野夫  阅读(35)  评论(0编辑  收藏  举报
原文链接:https://www.cnblogs.com/cdaniu/