算法实现
dodo_man
IT界的小鲜肉
展开
-
快速排序详解(Java实现)
一、快速排序的基本思想 每一轮的排序都会将区域分割成两个独立的分区,其中左分区的序列的所有值均会比右分区的所有值小。然后对子分区进行同样的分割操作,最后达到整体有序。在排序的过程中,由于已经分开的两部分的元素不需要进行比较,故减少了比较的次数,降低了排序时间。 二、快速排序的详细描述 首先在要排序的区域a 中选取一个基准值,而后将区域分成两个分区,其中左分区 b 中的元...原创 2018-08-14 09:46:18 · 15191 阅读 · 4 评论 -
排序算法概述
一、算法分类十种常见排序算法可以分为两大类: 非线性时间比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此称为非线性时间比较类排序。 线性时间非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此称为线性时间非比较类排序。 二、算法复杂度稳定:如果a原本在b前面,而a...原创 2018-08-14 10:13:04 · 183 阅读 · 0 评论 -
冒泡排序详解(Java实现)
一、冒泡排序基本思想 冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。 二、算法描述 1.比较相邻的元素。如果第一个比第二个大,就交换它们两个; 2.对每一...原创 2018-08-14 10:26:00 · 516 阅读 · 5 评论 -
插入排序详解(Java实现)
一、基本思想 插入排序(Insertion-Sort)的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。 二、算法描述 1.从第一个元素开始,该元素可以认为已经被排序; 2.取出下一个元素,在已经排序的元素序列中从后向前扫描; 3.如果该元素(已排序)大于新元素,将该元素移...原创 2018-08-14 10:58:54 · 595 阅读 · 0 评论 -
选择排序详解(Java实现)
一、基本思想 简单选择排序是最简单直观的一种算法,每一趟从待排序的数据元素中选择最小(或最大)的一个元素作为首元素,直到所有元素排完为止,简单选择排序是不稳定排序。 在算法实现时,每一轮确定最小元素的时候会通过不断地比较交换来使得首位置为当前最小,交换是个比较耗时的操作。其实我们很容易发现,在还未完全确定当前最小元素之前,这些交换都是无意义的。 因此可以通过设置一个变...原创 2018-08-14 13:10:50 · 27809 阅读 · 18 评论 -
二分查找算法详解(折半查询)
一、基本思想 二分查找是一种用于有序数列的折半查找算法。二分查找优点是比较次数少,查找速度快,平均性能好;时间复杂度为O(lgN)。因此二分查找也成为了面试中的常问问题。二、算法分析 二分查找就是将查找的键和子数组的中间键作比较,如果被查找的键小于中间键,就在左子数组继续查找;如果大于中间键,就在右子数组中查找,否则中间键就是要找的元素。三、编码实现package...原创 2018-08-14 14:06:37 · 640 阅读 · 0 评论