算法与数据结构
文章平均质量分 50
On丶
时间要久,姿势要对
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
算法与数据结构初章
前言 这篇就是介绍一些算法数据结构的常见的概念和一些常见算法的概括。(不断补充) 1、常数时间的操作: 一个操作如果和数据量没有关系,每次都是固定时间内完成的操作,叫做常数操作。 ps:就是操作花费的时间和数据量没关系。 2、时间复杂度: 一个算法流程中,常数操作数量的指标,与数据状态有关的时间复杂度为常数操作最多数量的指标。 ps:在常数操作数量的表达式中,只要高阶项不要低阶项,也不好高阶...原创 2018-10-12 16:09:42 · 251 阅读 · 0 评论 -
冒泡排序
冒泡算法可以说是排序算法中最先接触的也是最简单的算法了 直接上代码 public class BubbleSort { public static void main(String[] args) { int[] arr = {3,6,2,4,9,8,0,7,1}; bubleSort(arr); for(int a : arr){ System.out.print(a+...原创 2018-10-12 16:13:37 · 268 阅读 · 0 评论 -
选择排序
直接上代码,注释写的应该是很详细了,不多解释 public class SelectSort { public static void main(String[] args) { int[] arr = {0,3,6,2,4,9,8,7,1}; selectSort(arr); for(int a : arr){ System.out.print(a+" "); } }...原创 2018-10-12 16:14:57 · 162 阅读 · 0 评论 -
插入排序
不同于冒泡排序和选择排序的时间复杂度和数据状况无关(因为每个数都要进行比对或者交换),插入排序的时间复杂度是和数据状况有关系的,这个先有一个概念,后面会详细介绍 下面我们来看代码: public class InsertSort { public static void main(String[] args) { int[] arr = {0,3,6,2,4,9,8,7,1}; i...原创 2018-10-12 16:20:37 · 195 阅读 · 0 评论 -
递归算法
我们先用递归算法来解决一个小问题,当然这个小问题不必用算法来解,只是为了对递归做个说明。 问题:在一个数组中找出最大的数。 递归算法解决如下: public class Recursion { public static void main(String[] args) { int[] arr = {3,1,4,6,9,8,10,23,14}; System.out.println(g...原创 2018-10-12 16:23:35 · 265 阅读 · 0 评论 -
归并排序基本知识介绍
前言 归并排序稍微有那么些些的麻烦,归并排序中会涉及到递归算法。归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。 1、首先考虑下如何将两个有序数列合并。这个非常简单,只要比较的两个数列的第一个数,谁小就先取谁,取了后移动索引。然后再进行比较,如果有任何一个数列为空,那直接将另一个数列的数据依次取出即可。 publi...原创 2018-10-12 16:26:39 · 361 阅读 · 0 评论 -
归并排序应用之小和问题
问题描述 在一个数组中,每一个数左边比当前数小的数累加起来,叫做这个数组的小和。 举个栗子 {1,3,4,2,5} 1左边比1小的数,没有 3左边比3小的数,1; 4左边比4小的数,1、3; 2左边比2小的数,1; 5左边比5小的数,1、3、4、2; 所以小和为1+1+3+1+1+3+4+2=16 代码实现 public class SmallSum { public static voi...原创 2018-10-12 16:28:52 · 399 阅读 · 0 评论 -
快排之荷兰国旗问题
荷兰国旗问题 现有红白蓝三个不同颜色的小球,乱序排列在一起,请重新排列这些小球,使得红白蓝三色的同颜色的球在一起。这个问题之所以叫荷兰国旗问题,是因为我们可以将红白蓝三色小球想象成条状物,有序排列后正好组成荷 兰国旗。 问题分析 我们可以将这个问题视为一个数组排序问题。红白蓝分别对应数字0、1、2。红、白、蓝三色小球数量并不一定相同。 代码实现 public class Netherlan...原创 2018-10-12 16:32:07 · 353 阅读 · 0 评论
分享