算法
L看看
这个作者很懒,什么都没留下…
展开
-
排序算法之希尔排序
希尔排序:希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,核心思想:把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。举例:java代码:public static void shellSort(int arr[]){ int temp; for (int gap = arr.length/2;gap>0;gap/=2){//步长从原创 2020-07-31 20:20:07 · 151 阅读 · 0 评论 -
排序算法之插入排序
插入排序:思想:把n个待排序的元素看成为一个有序表和一个无序表,开始时有序表中只包含一个元素,无序表中包含有n-1个元素,排序过程中每次从无序表中取出一个元素,将其插入有序表中的适当位置,使其成为一个新的有序表。java代码public static void insertSort(int arr[]){ for (int i = 1;i<arr.length;i++){ int insertnumber=arr[i];//选定无序数据的第一个 int i原创 2020-07-31 20:16:23 · 131 阅读 · 0 评论 -
排序算法之冒泡排序
冒泡排序:思想:遍历若干次要排序的数列,每次遍历时,它都会从前往后依次的比较相邻两个数的大小;如果前者比后者大,则交换它们的位置。这样,一次遍历之后,最大的元素就在数列的末尾。采用相同的方法再次遍历时,第二大的元素就被排列在最大元素之前。重复此操作,直到整个数列都有序为止。可设置一个flag来判断某趟排序是否发生过数据交换。若某一趟并没有发生数据交换,则说明数组已经有序。java代码:public static void bubbleSort(int[] arr) { // 冒泡排序的时间复杂度原创 2020-07-31 20:14:47 · 197 阅读 · 0 评论 -
排序算法之选择排序
选择排序:思想:第一次从待排序的数据元素中选出最小(大)的一个元素,放在序列的起始位置,再从剩余未排序元素中继续寻找最小(大)的元素,放在起始位置的下一个位置,以此类推,直至所有元素都有序。java代码如下:public static void selectSort(int[] arr) { //选择排序时间复杂度是 O(n^2) for (int i = 0; i < arr.length - 1; i++) { int minIndex = i;原创 2020-07-31 20:13:26 · 120 阅读 · 0 评论 -
剑指offer题解(重建二叉树)
剑指Offer题解(重建二叉树)题目描述:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。思路:根据先序遍历规则和中序遍历规则可知,先序遍历的第一个节点为根节点的值,而在中序遍历序列中此节点将序列分为左右两部分,分别是左子树和右子树的中序遍历序列。并且左右序列长度就是左子树和右子树的节点个数,由于先序遍历的规则是先原创 2020-07-31 20:02:32 · 224 阅读 · 1 评论 -
排序算法之快速排序
排序算法分类:各种排序算法的复杂度:快速排序:思想:先选定一个基准元素,然后将数组其他元素中比他小的元素都放在它的左边,比它大的元素都放到它的右边,然后左侧和右侧可以再次进行分别排序,分别各自再次选定一个基准元素,再次进行上述排序操作,直至所有元素都有序。import java.util.Arrays;public class Testquicksort { public static void quickSort(int left,int right,int []arr){原创 2020-07-23 20:44:05 · 141 阅读 · 1 评论