排序算法
数据结构排序算法
一颗小陨石
除非我不想赢,不然没人能让我输
展开
-
折半和插值查找 --------java实现
一、递归写法,返回待查数据下标原理很简单,网上很多解释,这里就不叙述了/** * 二分查找 * @author * @date 2019/10/3112:54 */public class BinarySearch { public static void main(String[] args) { //必须是有序的 int arr[]={2...原创 2019-10-31 16:32:10 · 149 阅读 · 0 评论 -
基数排序-------------java实现
一、基本思想1.基数排序(Radix Sort)属于分配式排序(distribution sort),又称"桶子法"(Bucket Sort或Bin Sort),它是通过键值的各个位的值,将要排序的元素分配至某些“桶”中,达到排序的作用。2.基数排序属于稳定的排序,基数排序法的是效率高的稳定性排序法3.基数排序(Radix Sort)是桶排序的扩展4.将所有待比较数值统一为同样的数位长度,...原创 2019-10-30 14:22:28 · 131 阅读 · 0 评论 -
算法第四版笔记之归并排序-------------java实现
归并排序采用分治策略实现平均时间复杂度 : O(nlogn) 最差时间复杂度: O(nlogn) 稳定性: 稳定 空间复杂度:O(n)归并排序时以空间换时间的排序方法,空间消耗很大,一般内部排序使用快速排序较多假设有这样一组数据:[10,4,8,7,1,3,2,9]一、分如上将8个数组分成8个单独的数据二、合1.将 10和 4合并2.将8和7合并...原创 2019-10-29 20:51:19 · 215 阅读 · 0 评论 -
快速排序-------------java实现
一、基本思想选择一个基准数,通过一趟排序将待排序数据分成两个独立的部分,其中一部分的所有数都比基准数小,另一部分都比基准数大,然后再使用此方法递归对两部分数据进行快排,最终实现整个数据的有序。二、详解排序过程现有待排序数据:{-21, 312, 44, 11, -23, 2, 10};蓝色为左哨兵,记为left,黄色为右哨兵记为right,红色为基数基数=(左哨兵坐标+右...原创 2019-10-29 18:27:26 · 214 阅读 · 0 评论 -
基于插入排序的希尔排序-----------java实现
首先看一下之前使用简单插入排序存在的问题:当存在一个数组,其最后一个数据为最小值,如:arr={5,6,16,34,33,2}这样的话需要循环到最后一次,也就是第6次的时候,才可以将2排到前边,效率非常低但是希尔排序可以很好的解决这个问题,其是简单插入排序改进后的一个效率较高的排序方式,也叫缩小增量排序复杂度:平均时间: O(nlogn)最差: O(n²)...原创 2019-10-28 20:04:18 · 589 阅读 · 0 评论 -
插入排序-----------java实现
一、复杂度平均时间复杂度: O(n²)最差时: O(n²)是否稳定: 稳定空间开销: O(1)在大部分数据已经排好序时性能较好二、基本思想将n个待排序元素看成一个有序表和一个无序表,开始有序表只有一个元素,每次排序从无需表中取第一个元素,将它的值依此和有序表元素的数据比较,插入到有序表的适当位置,形成新的有序表详解:初始数据:18, 5, 54,...原创 2019-10-28 17:29:13 · 121 阅读 · 0 评论 -
选择排序 ------java实现
一、插入排序的思想把n个待排序元素看成一个有序列表和一个无序列表,开始时有序列表只有一个元素,无序表有n-1个元素,每次排序时从无序表中取出第一个元素将其依次与有序表元素进行比较,将其插入到有序表适当的位置,称为新的有序表二、思路详解待排序元素: [34] 54 123 55 11 22第一次排序: [11,34] 54 123 55 22第二次排序 :...原创 2019-10-28 16:43:04 · 134 阅读 · 0 评论 -
冒泡排序---------java实现
一、冒泡排序平均时间复杂度: O(n²)最差时: O(n²)是否稳定:稳定 空间开销:O(1)适合n较小时原始数组:3 , 9, -1, 8, 2第一趟排序:(1) 3, 9, -1, 8,2(2) 3, -1, 9,8, 2(3) 3, -1, 8, 9, 2(4)3, -1, 8, 2, 9 9确定第二趟排序:(1)-1,3, 8, 2, 9(2)-1, ...原创 2019-10-26 11:45:40 · 116 阅读 · 0 评论