![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
十一月上
ののののののののの
展开
-
排序算法之直接选择排序及Java实现
一、排序算法的分类选择排序(直接选择排序,堆排序)交换排序(冒泡排序,快速排序)插入排序(直接插入排序,希尔排序) 归并排序桶式排序 基数排序 二、直接选择排序的原理选择排序是一种简单直观的排序算法,它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。三、直接选择排序的实现public...原创 2018-04-20 13:30:09 · 1676 阅读 · 0 评论 -
剑指Offer【21-30】Java实现
21、输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)import java.util.ArrayList;import java.ut...原创 2018-07-19 22:33:20 · 175 阅读 · 0 评论 -
剑指Offer【11-20】Java实现
11、输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。public class Solution { public int NumberOf1(int n) { int num = 0; int[] arr = new int[32]; if(n > 0){ arr = getT(n);...原创 2018-07-19 22:27:18 · 168 阅读 · 0 评论 -
剑指Offer【1-10】Java实现
1、在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。public class Solution { public boolean Find(int target, int [][] array) { int i = 0; ...原创 2018-07-19 22:20:30 · 132 阅读 · 0 评论 -
排序算法之性能分析及总结
一、排序算法说明排序的定义:对一个无序的序列进行排序的过程。 输入:n个数:a1,a2,a3,…,an。 输出:n个数的排列:a1,a2,a3,…,an,使得a1<=a2<=a3<=…<=an。排序的稳定性:相同值的节点相对位置是否会发生改变。 稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面。 不稳定:如果a原本在b的前面,而a=b,排序之后a...原创 2018-04-25 21:41:34 · 13385 阅读 · 0 评论 -
排序算法之快速排序及Java实现
一、排序算法的分类选择排序(直接选择排序,堆排序)交换排序(冒泡排序,快速排序)插入排序(直接插入排序,希尔排序) 归并排序桶式排序 基数排序 二、快速排序的原理快速排序采用了分治的思想,将一个数组分成多个子数组,当子数组满足排序时,整个数组则已经排好序。它的基本思想是通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再...原创 2018-04-21 17:30:09 · 834 阅读 · 0 评论 -
排序算法之桶排序及Java实现
一、排序算法的分类选择排序(直接选择排序,堆排序)交换排序(冒泡排序,快速排序)插入排序(直接插入排序,希尔排序) 归并排序桶式排序 基数排序 二、桶排序的原理之前介绍的算法都是非线性时间比较类排序,而桶排序是一种线性时间非比较类的排序算法,它是常见排序算法中最快的一种,但是也同时非常耗费空间,是典型的空间换时间的排序算法。桶排序的原理是申请一个数组空间,遍历待排序数...原创 2018-04-25 16:10:03 · 764 阅读 · 0 评论 -
排序算法之堆排序及Java实现
一、排序算法的分类选择排序(直接选择排序,堆排序)交换排序(冒泡排序,快速排序)插入排序(直接插入排序,希尔排序) 归并排序桶式排序 基数排序 二、堆排序的原理堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序。堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆...原创 2018-04-25 14:45:26 · 1291 阅读 · 1 评论 -
排序算法之直接插入排序及Java实现
一、排序算法的分类选择排序(直接选择排序,堆排序)交换排序(冒泡排序,快速排序)插入排序(直接插入排序,希尔排序) 归并排序桶式排序 基数排序 二、直接插入排序的原理插入排序通俗来讲,就是在一组无序的数组中一个个地取出值,将其放在有序的数组中合适的位置,使有序的数组再次有序,直到无序的数组为空,循环结束。三、直接插入排序的实现public class Inser...原创 2018-04-20 21:18:34 · 641 阅读 · 0 评论 -
排序算法之归并排序及Java实现
一、排序算法的分类选择排序(直接选择排序,堆排序)交换排序(冒泡排序,快速排序)插入排序(直接插入排序,希尔排序) 归并排序桶式排序 基数排序 二、归并排序的原理归并排序利用的是分治的思想实现的,对于给定的一组数据,利用递归与分治技术将数据序列划分成为越来越小的子序列,之后对子序列排序,最后再用递归方法将排好序的子序列合并成为有序序列。合并两个子序列时,需要申请两个子序列...原创 2018-04-24 21:15:32 · 11150 阅读 · 2 评论 -
排序算法之希尔排序及Java实现
一、排序算法的分类选择排序(直接选择排序,堆排序)交换排序(冒泡排序,快速排序)插入排序(直接插入排序,希尔排序) 归并排序桶式排序 基数排序 二、希尔排序的原理希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序。它的主要思想是将整个序列分成多个子序列,之后依次对每个子序列进行直接插入排序,经过多次不同的子序列分割并排序后,整个数...原创 2018-04-24 20:22:53 · 545 阅读 · 0 评论 -
排序算法之冒泡排序及Java实现
一、排序算法的分类选择排序(直接选择排序,堆排序)交换排序(冒泡排序,快速排序)插入排序(直接插入排序,希尔排序) 归并排序桶式排序 基数排序 二、冒泡排序的原理冒泡排序需要重复地走访要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,该数列就已经排序完成。步骤如下所示:比较相邻的元素。如果第一个比第...原创 2018-04-20 13:51:59 · 657 阅读 · 0 评论 -
剑指Offer【31-40】Java实现
31、求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数(从1 到 n 中1出现的次数)。public class Solution { public i...原创 2018-07-19 22:39:22 · 161 阅读 · 0 评论