本文分析冒泡、快速、选择、插入、希尔、归并和堆排序,为了对以下各个算法进行方便的测试,测试主方法体如下(Java 实现):public class Sort { public static void main(String[] args) { int[] input = {5, 4, 7, 1, 6... ...
分类:
编程语言 时间:
2020-06-21 15:46:10
阅读次数:
92
概述 本文中主要讲解一些常见排序算法,分别是冒泡排序,插入排序,选择排序,希尔排序,归并排序,快速排序,堆排序,计数排序 常见排序算法可以分为两大类: 非线性时间比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此称为非线性时间比较类排序。 线性时间非比较类排序 ...
分类:
编程语言 时间:
2020-06-17 13:03:11
阅读次数:
69
堆 堆(heap)是计算机科学中一类特殊的数据结构的统称,通常是一个可以被看做一棵树的数组对象。 堆{k1,k2,ki,…,kn} (ki <= k2i,ki <= k2i+1)|(ki >= k2i,ki >= k2i+1), (i = 1,2,3,4...n/2) 关于堆: 堆中某个节点的值总是 ...
分类:
编程语言 时间:
2020-06-16 20:24:45
阅读次数:
66
一、树 1.概念: 包含n(n>=0)个结点的有穷集;树有多个节点(node),用以储存元素。某些节点之间存在一定的关系,用连线表示,连线称为边(edge)。边的上端节点称为父节点,下端称为子节点。树像是一个不断分叉的树根。 2.相关概念: 一棵树可以没有任何节点,称为空树 一棵树可以只有 1 个节 ...
分类:
编程语言 时间:
2020-06-15 22:49:31
阅读次数:
79
1、堆的定义 堆就是用数组实现的二叉树,所有它没有使用父指针或者子指针。 堆就是利用完全二叉树的结构来维护的一维数组。 创建一个堆除了一个简单的一维数组以外,不需要任何额外的空间。 如果我们不允许使用指针,那么我们怎么知道哪一个节点是父节点,哪一个节点是它的子节点呢?节点在数组中的位置index 和 ...
分类:
编程语言 时间:
2020-06-15 21:13:23
阅读次数:
94
package HeapSort // 使用堆排序查询出找出堆里面最大的数 func HeapSortMax(arr []int, length int) []int { //length := len(arr) if length <= 1 { return arr } depth := leng ...
分类:
编程语言 时间:
2020-06-13 22:58:03
阅读次数:
73
数据结构::堆排序 #include <stdio.h> void swap(int array[],int x,int y){ int key; key=array[x]; array[x]=array[y]; array[y]=key; } //从大到小排序 //void Down(int ar ...
分类:
编程语言 时间:
2020-06-13 17:13:18
阅读次数:
66
官网给的大纲吧,你可以把它当重点复习,但如果你只看大纲内容,你会哭的,因为,超纲非常严重!!!!还有,不要只看天勤或王道的书,很多知识上面没有覆盖到,有时间的话尽量看看课本。 选择题,考的范围很广泛,但知识点考的比较简单,这一部分建议大家要有一个比较全面的复习,题目不难,就怕有的知识点压根儿没见过。 ...
分类:
其他好文 时间:
2020-06-13 15:47:05
阅读次数:
77
1.堆【heap】 (1)堆总是一颗完全二叉树【深度为K,除了k层外,1~k-1层的结点数都达到最大值,k层所有的节点都连续集中在最左边的就是完全二叉树】 (2)堆 不是在程序编译时申请内存的,而是在程序运行时向操作系统申请内存空间,即动态分配内存空间,一般是申请/给予的过程; (3)堆通常可被看作 ...
分类:
其他好文 时间:
2020-06-13 10:35:03
阅读次数:
67
堆排序 堆排序的思想是先调用堆的inset方法,再调用堆的remove方法输出。 实现 for (i = 0; i < size; i++) heap.insert(array[i]); for (i = 0; i < size; i++) array[i] = heap.remove(); 效率 ...
分类:
编程语言 时间:
2020-06-12 01:13:05
阅读次数:
59