欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

ten da classical sort

程序员文章站 2023-12-27 10:29:03
...

ten da classical sort

ten da classical sort

  • k指“桶”的个数;
  • In-place指占用常数内存,不占用额外内存;
  • Out-place指占用额外内存)

ten da classical sort

  • 快排、归并、堆排、冒泡属比较
  • 在排序的最终结果里,元素之间的次序依赖于它们之间的比较。
  • 每个数都必须和其他数进行比较,才能确定自己的位置。
  • 在冒泡之类的排序中,需要比较n次,所以平均时间复杂度为O(n²)。

  • 在归并、快排之类,
    • 问题规模通过分治法消减为logN次,
    • 所以时间复杂度平均O(nlogn)。
  • 比较排序适用于一切需要排序

  • 计数、基数、桶排属非比较排序
  • 非比较排序通过确定每个元素之前,应有多少个元素
  • 数组arr,计算arr[i]之前有多少个元素,则唯一确定了arr[i]在排序后数组中的位置。
  • 非比较排序只要确定每个元素之前的已有的元素个数即可,一次遍历即可解决。
  • 时间复杂度O(n)。
  • 但非比较排序需要占用空间来确定唯一位置。
  • 对数据规模和数据分布有一定的要求。

(Bubble Sort)

  • 越小的元素会经由交换慢慢“浮”到数列的顶端。

  • 比较相邻的元素。如果第一个比第二个大,就交换它们;

  • 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大的数;

  • 针对所有的元素重复以上的步骤,除了最后一个;

  • 重复1~3,直到排序完成。


public static int[] bubbleSort(int[] array) {
if (array.length == 0)
return array;
for (int i = 0; i < array.length; i++)
  for (int j = 0; j < array.length - 1 - i; j++)
    if (array[j + 1] < array[j]) {
      int temp = array[j + 1];
      array[j + 1] = array[j];
      array[j] = temp;
    }
return array;
}

  • 最佳情况:T(n) = O(n)
  • 最差情况:T(n) = O(n2)
  • 平均情况:T(n) = O(n2)

Selection Sort

相关标签: 计算机算法

上一篇:

下一篇: