AcWing 838. 堆排序 #include <bits/stdc++.h> using namespace std; const int N=1e6+10; int h[N],num; void down(int u){ int t=u; if(u*2<=num&&h[u*2]<h[t]) t ...
分类:
编程语言 时间:
2020-07-30 14:25:51
阅读次数:
68
利用Java语言实现七大经典排序算法:冒泡排序、选择排序、插入排序、希尔排序、堆排序、归并排序以及快速排序。 分类 类别 算法 插入排序类 插入排序、希尔排序 选择排序类 选择排序、堆排序 交换排序类 冒泡排序、快速排序 归并排序类 归并排序 复杂度 算法 平均情况 最好情况 最坏情况 辅助空间 稳 ...
分类:
编程语言 时间:
2020-07-30 01:51:43
阅读次数:
111
数据结构中的栈——先进后出,先进先出 数据结构中的堆——堆的本质是一个二叉树,包括二分法查找,朗格朗日差值查找,堆排序查找极值 结构体 void main006() { struct myStruct // 结构体的意义:将多种类型的数据整合在一起 { int a[10]; int i; }; st ...
分类:
其他好文 时间:
2020-07-26 00:04:36
阅读次数:
96
引子 最近练习时,觉得有些生疏,所以加强锻炼。 具体实现 快速排序(从小到大排序,升序) public class QuickSort{ public static void swap(int[] arr, int i, int j){ int temp = arr[i]; arr[i] = arr ...
分类:
编程语言 时间:
2020-07-24 22:11:29
阅读次数:
94
内部排序:数据记录在内存中进行排序外部排序:待排序文件较大,需要访问外存常见的内部排序:插入排序(直接插入、折半插入、希尔排序)、交换排序(冒泡、快排)、选择排序(简单选择、堆排序)、归并排序(2路归并)、基数排序外排:归并排序(多路归并)、各种内排的性能比较:插入排序每次将一个待排序的记录按关键字大小插入到前面已排好序的子序列中,直到全部记录插入完成每一轮能够确定一个最终位置的记录,某时刻的状态
分类:
编程语言 时间:
2020-07-19 16:23:30
阅读次数:
50
强烈推荐视频: 堆排序(heapsort) 代码: #include <iostream> #include <stdlib.h> using namespace std; void heapify(int tree[], int n, int i) { if (i >= n) return; in ...
分类:
编程语言 时间:
2020-07-17 01:23:04
阅读次数:
99
第八章给我们介绍了内部排序和外部排序。各种排序方法都有各自的优缺点,没有说哪一种是最好的。直接插入排序、折半插入排序、冒泡排序和简单选择排序的速度较慢,但是它们实现的过程比较简单,所以称他们为简单的排序方法。速度较快的算法称为先进的排序方法,但是实现的过程比较复杂。我们在选择排序方法时,要综合考虑。 ...
分类:
其他好文 时间:
2020-07-12 22:14:02
阅读次数:
73
一、本章知识思维导图 二、第八章知识小结 1. 插入排序 (1) 直接插入排序 对于待排序列中的元素,在已排序列中顺序查找插入位置,将待排元素插入并移动。 (2)折半插入排序 基于直接插入排序,查找插入位置使用折半查找。 (3)希尔排序 将间隔步长d1的两个元素分为一组,组内进行直接插入排序;第二趟 ...
分类:
其他好文 时间:
2020-07-12 18:50:39
阅读次数:
52
一、本章小结 1.根据时间复杂度的不同,常见的算法可以分为3大类。 1).O(n²) 的排序算法 冒泡排序 简单选择排序 插入排序:直接插入,折半插入 2).O(n log n) 的排序算法 希尔排序 归并排序 快速排序 堆排序 2.根据是否受到待排序对象初始排列影响,可分为 1)受到待排序对象的初 ...
分类:
其他好文 时间:
2020-07-12 14:30:19
阅读次数:
62
排序的概念 排序的方式: 1、插入排序: 直接插入排序: 一 一比对 折半插入排序:在已经拍好的序列中插入,适合初始记录无序、n较大的情况 希尔排序:待排序的关键字基本有序->效率较高 分组插入,先分割(相隔某个增量的记录),对每组进行直接插入排序(不能用于链式结构) 2、交换排序: 冒泡排序:左右 ...
分类:
其他好文 时间:
2020-07-12 12:36:00
阅读次数:
55