Data Structures & Algorithms
BrokenIceCrystal
Standing on the shoulders of giants
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
选择排序算法:堆排序-Heap Sort
内部排序算法:堆排序基本思想堆的定义 n个关键字序列k1,k2,…,kn称为堆,当且仅当该序列满足如下性质之一(简称堆性质):ki≤k2i且ki≤k2i+1 或ki≥k2i且ki≥k2i+1(1≤i≤FLOOR(n/2))若将此序列所存储的向量R[1..n]看做是一棵完全二叉树的存储结构,则堆实质上是满足如下性质的完全二叉树:树中任一非叶结点的关键字均不大于(或不小于)其左右孩子(若 存在)原创 2017-05-13 20:50:42 · 541 阅读 · 0 评论 -
二叉堆-Binary heap
基本思想(二叉)堆的定义 n个关键字序列k1,k2,…,kn称为堆,当且仅当该序列满足如下性质之一(简称堆性质):ki≤k2i且ki≤k2i+1 或ki≥k2i且ki≥k2i+1(1≤i≤FLOOR(n/2))若将此序列所存储的向量R[1..n]看做是一棵完全二叉树的存储结构,则堆实质上是满足如下性质的完全二叉树:树中任一非叶结点的关键字均不大于(或不小于)其左右孩子(若 存在)结点的关键字原创 2017-05-16 23:05:38 · 1298 阅读 · 0 评论 -
交换排序算法:冒泡排序-Bubble Sort
基本思想排序思想对n个记录的排序码序列进行n-1次扫描。每次扫描时,都从下到上对相邻的两个排序码进行比较,如果不符合由小到大的顺序,就将他们交换位置。 1. 经过第一次扫描,就能从n-1对相邻排序码的比较中,把排序码序列里最大的元素渐渐地移动到序列的“最后”边; 2. 经过第二次扫描,就能从n-2对相邻排序码的比较中,把排序码序列里次大的元素渐渐地排到序列的“次后”位置; 3. 经过最多原创 2017-05-29 15:40:08 · 612 阅读 · 0 评论 -
基于线性表的查找:二分查找-Binary Search
基本思想二分查找定义二分查找又称折半查找,它是一种效率较高的查找方法。折半查找的算法思想是将数列按有序化(递增或递减)排列,查找过程中采用跳跃式方式查找,即先以有序数列的中点位置为比较对象,如果要找的元素值小 于该中点元素,则将待查序列缩小为左半部分,否则为右半部分。通过一次比较,将查找区间缩小一半。 折半查找是一种高效的查找方法。它可以明显减少比较次数,提高查找效率。但是,折半查找的先决条件是查找原创 2017-06-02 10:10:03 · 1391 阅读 · 0 评论 -
插入排序:直接插入排序-Direct insertion sort
基本思想假设待排序的记录存放在数组R[0..n-1]中。初始时,R[0]自成1个有序区,无序区为R[1..n-1]。 从i=1起直至i=n-1为止,依次将R[i]插入当前的有序区R[0..i-1]中,生成含n个记录的有序区。public class InsertSort { public static void main(String[] args) { // TODO Aut原创 2017-08-05 17:52:11 · 569 阅读 · 0 评论 -
交换排序算法:快速排序-Quick Sort
基本思想先从数列中取出一个数作为基准数。分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。再对左右区间重复第二步,直到各区间只有一个数。总结:挖坑填数+分治法//快速排序 void quick_sort(int s[], int l, int r) { if (l < r) { //Swap(s[l], s[(l +原创 2017-08-15 11:08:05 · 496 阅读 · 0 评论
分享