
算法
终其一世微
这个作者很懒,什么都没留下…
展开
-
排序(三)
堆排序堆这一数据结构需要满足两个条件:1、堆必须是一个完全二叉树2、堆中每个节点的值都大于等于(大顶堆)或者小于等于(小顶堆)其左右子节点的值。堆排序是原地排序算法。堆排序包括建堆和排序两个操作,建堆过程的时间复杂度是 O(n),排序过程的时间复杂度是 O(nlogn),所以,堆排序整体的时间复杂度是 O(nlogn)。两个步骤::1、建堆 2、堆化代码:/** * 堆排序算法 ...原创 2019-12-11 14:33:46 · 161 阅读 · 0 评论 -
排序(二)
总结一下归并排序和快排归并排序:非原地排序,稳定排序,时间复杂度O(nlogn),空间复杂度O(n)。public static void mergeSort(int[] list, int[] tempList, int head, int tail) { if (head < tail) { // 取分割位置 int middle = (head + tail) / 2;...原创 2019-12-01 10:51:53 · 121 阅读 · 0 评论 -
排序算法(一)
今天总结了三种时间复杂度为 O(n2)的排序算法:冒泡排序、插入排序、选择排序插入排序和冒泡排序的时间复杂度相同,都是 O(n2),都是原地排序算法,都是稳定的排序算法,但是插入排序比冒泡所用的数据交换次数少。选择排序是一种原地排序算法,时间复杂度都为 O(n2),选择排序是一种不稳定的排序算法。冒泡排序:public static void bubbleSort(int[] list) ...原创 2019-11-29 11:50:13 · 178 阅读 · 0 评论