排序&查找
QiuBika_061
入门级程序猿
展开
-
快速排序(直接)
快速排序(Quicksort)是对冒泡排序的一种改进。 通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。 交换类排序 不稳定排序算法 时间复杂度O(nlog2n)至O(n^2) 平均时间复杂度O(nlgn) ...原创 2018-05-09 13:06:11 · 207 阅读 · 0 评论 -
冒泡排序
交换类排序 稳定排序算法 时间复杂度 O(n)至O(n^2) 平均时间复杂度O(n^2) 空间复杂度O(1) import java.util.Scanner; public class BubbleSort { public static void bubbleSort(int []arr) { for(...原创 2018-11-21 17:33:07 · 92 阅读 · 0 评论 -
选择排序
选择类排序 不稳定排序算法 时间复杂度O(n^2)至O(n^2) 平均时间复杂度O(n^2) 空间复杂度 O(1) import java.util.Scanner; public class Main { public static void selectionSort(int arr[]) { int mi...原创 2018-11-28 20:52:40 · 118 阅读 · 0 评论 -
插入排序
插入类排序 稳定排序算法 时间复杂度O(n)至O(n^2) 平均时间复杂度O(n^2) 空间复杂度 O(1) import java.util.Random; import java.util.Scanner; class InsertSort { public static void insertSort(int [] arr...原创 2018-12-07 22:43:51 · 81 阅读 · 0 评论 -
希尔排序
希尔排序 * 平均时间复杂度O(n^(1.3~2)) * 空间复杂度T(1) * 希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序; * 随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止 * 不稳定 java实现: public class ShellSort { public void shellSort(in...原创 2018-12-07 23:19:58 · 89 阅读 · 0 评论 -
桶排序
桶排序 * 平均时间复杂度O(n+c) 最好O(n) * 空间复杂度T(n+m) (n个数据,m个桶) * 将数组分到有限数量的桶里。每个桶再个别排序。 * 稳定 过程 * 1.判断数组 * 2.获取最大/最小值,计算桶数量 * 3.初始化桶 * 4.分桶 * 5.对每个桶排序 * 6.传回数组 java实现: public class BucketSort { pu...原创 2019-06-13 14:12:43 · 253 阅读 · 0 评论 -
二分(折半)查找
二分查找 二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。 在最坏的情况下用O(log n)完成搜索任务。 java实现: public class BinarySearch { public int binarySearch(int[] arr,int target) ...原创 2019-06-13 14:29:52 · 316 阅读 · 0 评论