数据结构与算法
提高对数据结构的理解和学会怎样用算法设计的思想分析问题
汤高
喜欢开源的框架技术、乐于研究其底层源码,把个人从学习到工作中用到的所有技术梳理总结,也分享给所有爱学习新技术的朋友们,相互交流,一起进步
展开
-
各种排序算法的总结和比较
1 快速排序(QuickSort)快速排序是一个就地排序,分而治之,大规模递归的算法。从本质上来说,它是归并排序的就地版本。快速排序可以由下面四步组成。(1) 如果不多于1个数据,直接返回。(2) 一般选择序列最左边的值作为支点数据。(3) 将序列分成2部分,一部分都大于支点数据,另外一部分都小于支点数据。(4) 对两边利用递归排序数列。快速排序比大部分排序算法转载 2016-02-15 12:39:22 · 2207 阅读 · 1 评论 -
必须掌握的八种排序(7-8)--归并排序,基数排序
7、归并排序(1)基本排序:归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。(2)理解图: 盗张图,这张图很好理解递归分解下面的图理解合并 (3)、实现代码import java.util.Arrays;/** * 归并排序是建立在归并操原创 2016-02-18 19:10:53 · 1433 阅读 · 2 评论 -
必须掌握的八种排序(5-6)--冒泡排序,快速排序
5、冒泡排序(1)基本思想:在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。(2)理解图(3)代码实现/** * 冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素, * 如果他们的顺序错误就把他们交换过来。走访数列的工作是原创 2016-02-17 19:24:01 · 3405 阅读 · 0 评论 -
必须掌握的八种排序(3-4)--简单选择排序,堆排序
3、简单选择排序(1)基本思想:在要排序的一组数中,选出最小的一个数与第一个位置的数交换;然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止。(2)理解图第一次 : 08最小 和21交换位置 第二次: 除第一个位置的08外 16最小 和25交换位置 以此类推(3)代码实现 public static void selectSort(int[] a原创 2016-02-15 13:36:56 · 1819 阅读 · 1 评论 -
必须掌握的八种排序(1-2)--插入排序,希尔排序
很多人算法和数据结构不好,归根结底就是基础不扎实,算法和数据结构不好的话,达到的高度肯定不会很高,最近重新加强了一下自己的算法基础,决定从最基础的内容开始,如有不足的地方,欢迎指正。首先来看一下八种排序之间的关系图1、 直接插入排序(1)基本思想:在要排序的一组数中,假设前面(n-1) [n>=2] 个数已经是排好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数也是排好顺序的。如此反复循环原创 2016-02-15 11:49:51 · 2056 阅读 · 1 评论