1.十大排序算法

1.什么是排序算法?

在梳理十大排序算法之前,虽然知道排序算法是将数字或字母按增序排列的算法,但该理解过于片面,那排序算法的权威定义是什么呢。

一个排序算法(英语:Sorting algorithm)是一种能将一串资料依照特定排序方式排列的算法。最常用到的排序方式是数值顺序以及字典顺序。基本上,排序算法的输出必须遵守下列两个原则:

  1. 输出结果为递增序列(递增是针对所需的排序顺序而言)
  2. 输出结果是原输入的一种排列、或是重组

2. 如果评判一个算法?

1.时间复杂度

执行算法需要消耗的时间。一般来说,看算法实现中的for循环的个数,比如说冒泡排序的算法实现中有两个for,那么它的时间复杂度是n^2(n代表目标集合的大小)。但时间复杂度有三种细分情况,通常是最差、平均和最好性能。

2.空间复杂度

执行算法时所消耗的空间大小。在执行算法时,需要看有没有引入额外的内存空间,比如说对一个集合进行排序,没有引入额外的空间,那么时间复杂度就是O(n),如果创建一个大小和目标集合相同的集合,那么空间复杂度就是O(n^2)

3.稳定性

为啥算法还有稳定性,这种听起来不太好理解。我理解是算法排序后,各元素的相对位置的唯一性有没有变化,如果执行了多次该算法,各元素的相对位置都是固定且唯一的,那么就说这个算法是稳定的,否则称之为不稳定。

3.十大排序算法

1.算法之间的不同在于适用场景不同,各有千秋。
  1. 冒泡排序(bubble sort)
  2. 选择排序(selection sort)
  3. 插入排序(insertion sort)
  4. 快速排序(quick sort)
  5. 归并排序(merge sort)
  6. 希尔排序(shell sort)
  7. 堆排序(heap sort)
  8. 计数排序(counting sort)
  9. 桶排序(bucket sort)
  10. 基数排序(radix sort)
2.简要比较

1.十大排序算法_第1张图片

4.算法动态可视化学习资料

  1. https://visualgo.net/zh

1.排序算法 wiki

你可能感兴趣的:(#,4.,数据结构与算法,排序算法,算法,数据结构,十大排序算法,java)