随笔分类 - 排序算法
摘要:二叉树的遍历(traversing binary tree)是指从根结点出发,按照某种次序依次访问二叉树中所有的结点,使得每个结点被访问依次且仅被访问一次。 前序 中 左 右 中序 左 中 右 后序 左 右 中 前序遍历 若树为空,则空操作返回。否则,先访问根节点,然后前序遍历左子树,再前序遍历右子
阅读全文
摘要:最近总结了以下排序算法: 插入排序:直接插入排序,希尔排序 交换排序:冒泡排序,快速排序(挖坑法,前后指针法,左右指针法) 选择排序:直接选择排序,堆排序 归并排序 所以想对这些排序算法再做一个对比。 一、理论值对比 (参考:https://www.cnblogs.com/angelye/p/750
阅读全文
摘要:一、基本思想 归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(divide-and-conquer)的一个非常典型的应用。(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。 归并排序的步骤
阅读全文
摘要:一、直接选择排序 #include <iostream> using namespace std; void print_array(int a[], int n) { for(int i = 0; i < n; i++) cout << a[i] << " " ; cout << endl; }
阅读全文
摘要:一、冒泡排序 #include <iostream> using namespace std; void print_array(int a[], int n) { for(int i = 0; i < n; i++) cout << a[i] << " " ; cout << endl; } vo
阅读全文
摘要:插入排序的思想:每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子数组中的适当位置,直到全部记录插入完成为止。 一、直接插入排序 #include <iostream> using namespace::std; //打印 void print_array(int a[], int n)
阅读全文