首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
【
Java基础知识强化55:经典排序之归并排序(MergeSort)
】的更多相关文章
Java基础知识强化55:经典排序之归并排序(MergeSort)
1. 归并排序的原理: 原理,把原始数组分成若干子数组,对每一个子数组进行排序, 继续把子数组与子数组合并,合并后仍然有序,直到全部合并完,形成有序的数组 举例: 无序数组[6 2 4 1 5 9] 先看一下每个步骤下的状态,完了再看合并细节 第一步: [6 2 4 1 5 9]原始状态 第二步: [2 6] [1 4] [5 9]两两合并排序,排序细节后边介绍 第三步: [1 2 4 6] [5 9]继续两组两组合并 第四步: [1 2 4 5 6 9]合并完毕,排序完毕 输…
Java基础知识强化之集合框架笔记76:ConcurrentHashMap之 ConcurrentHashMap简介
1. ConcurrentHashMap简介: ConcurrentHashMap是一个线程安全的Hash Table,它的主要功能是提供了一组和Hashtable功能相同但是线程安全的方法.ConcurrentHashMap可以做到读取数据不加锁,并且其内部的结构可以让其在进行写操作的时候能够将锁的粒度保持地尽量地小,不用对整个ConcurrentHashMap加锁(实际上就是对哈希表加锁). 2. ConcurrentHashMap的内部结构: ConcurrentHashMap为了提高本身…
Java基础知识强化之多线程笔记01:多线程基础知识(详见Android(java)笔记61~76)
1. 基础知识: Android(java)学习笔记61:多线程程序的引入 ~ Android(java)学习笔记76:多线程-定时器概述和使用 …
Java基础知识强化之集合框架笔记28:ArrayList集合练习之去除ArrayList集合中的重复字符串元素(升级)
1. 需求:ArrayList去除集合中字符串的重复值(字符串的内容相同) 要求:不能创建新的集合,就在以前的集合上做. 2. 代码示例之 去除集合中重复元素,不创建新的集合: package cn.itcast_04; import java.util.ArrayList; import java.util.Iterator; /* * 需求:ArrayList去除集合中字符串的重复值(字符串的内容相同) * 要求:不能创建新的集合,就在以前的集合上做. */ public class…
Java基础知识强化54:经典排序之插入排序(InsertSort)
1. 插入排序原理图: 算法步骤: 1)将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列. 2)从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置.(如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相等元素的后面. 2. 插入排序的代码实现: package cn.itcast; /* * 插入排序基本思想 * 将n个元素的数列分为已有序和无序两个部分,如插入排序过程示例下所示: * {{a1},{a2,a3,a4,…,an…
Java基础知识强化57:经典排序之希尔排序(ShellSort)
1. 希尔排序的原理: 希尔排序(Shell Sort)是插入排序的一种.也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本.希尔排序是非稳定排序算法.该方法因DL.Shell于1959年提出而得名. 在上面这幅图中: 初始时,有一个大小为 10 的无序序列. 在第一趟排序中,我们不妨设 gap1 = N / 2 = 5,即相隔距离为 5 的元素组成一组,可以分为 5 组. 接下来,按照直接插入排序的方法对每个组进行排序. 在第二趟排序中,我们把上次的 gap 缩小一半,即 gap2 =…
Java基础知识强化56:经典排序之快速排序(QuickSort)
1. 快速排序的原理: 快速排序(Quicksort)是对冒泡排序的一种改进. 快速排序由C. A. R. Hoare在1962年提出.它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列. 方法其实很简单:分别从初始序列"6 1 2 7 9 3 4 5 10 8"两端开始"探测"…
Java基础知识强化51:经典排序之桶排序(BucketSort)
1. 首先说明三点: (1)桶排序是稳定的 (2)桶排序是常见排序里最快的一种,比快排还要快…大多数情况下 (3)桶排序非常快,但是同时也非常耗空间,基本上是最耗空间的一种排序算法 2. 桶排序的分析过程: 对无序数组有个要求,就是成员隶属于固定(有限的)的区间,如范围为[0-9],考试分数为1-100等 例如待排数字[6,2,4,1,5,9] 准备10个空桶(桶数是固定区间中最大数,比如这里就是10) [6 2 4 1 5 9] 待排数组 [0 0 0 0 0 0…
Java基础知识强化58:经典排序之二叉树排序(BinaryTreeSort)
1. 二叉树排序 二叉树排序的描述也是一个递归的描述, 所以二叉树排序的构造自然也用递归的: 二叉排序树或者是一棵空树,或者是具有下列性质的二叉树: (1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值: (2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值: (3)左.右子树也分别为二叉排序树: (4)没有键值相等的结点. 2. 二叉树排序代码实现: package com.himi.classisort; public class BinaryTreeSortDemo…
Java基础知识强化53:经典排序之选择排序(SelectionSort)
1.选择排序的原理图: 2. 选择排序代码实现: package cn.itcast_02; /* * 数组排序之选择排序: * 从0索引开始,依次和后面元素比较,小的往前放,第一次完毕,最小值出现在了最小索引处 */ public class ArrayDemo { public static void main(String[] args) { // 定义一个数组 int[] arr = { 24, 69, 80, 57, 13 }; System.out.println("排序前:&quo…