摘要: 快速排序 快速排序(从小到大排序)其实思想就是,将比基准点小的移动到基准点前面,比基准点大的移动到基准点后面,并且基准点能在排序中找到确定的位置,并起到分割的作用。前面和后面两个相对有序的区间继续做快速排序。 写法一 对排序的数组进行左右扫描,根据基准点的值进行前后相换。 public static 阅读全文
posted @ 2021-04-02 23:27 鸭梨的药丸哥 阅读(18) 评论(0) 推荐(0)
摘要: 归并排序 归并排序分成:分,并两大步骤,使用的分治的思想。 和选择排序一样,归并排序的性能不受输入数据的影响,但表现比选择排序好的多,因为始终都是O(n log n)的时间复杂度。代价是需要额外的内存空间。 伪代码 分割 分割需要用到递归。 public static int[] sort(int[ 阅读全文
posted @ 2021-04-02 18:35 鸭梨的药丸哥 阅读(15) 评论(0) 推荐(0)
摘要: 插入排序 直接插入排序 插入排序(Insertion-Sort) 的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫 阅读全文
posted @ 2021-04-02 13:45 鸭梨的药丸哥 阅读(13) 评论(0) 推荐(0)
摘要: 选择排序 遍历无序数列,找到无序区间中的最小(或最大值)放到数列中其数对应的位置。 public static void sort(int[] arr){ if (arr.length == 0) return; int minindex = 0; for (int i = 0;i<arr.leng 阅读全文
posted @ 2021-04-02 13:13 鸭梨的药丸哥 阅读(12) 评论(0) 推荐(0)
摘要: 冒泡排序的改良版 循环优化 外循环优化 冒泡排序其实无需写死排序arr.length-1趟,因为在对一些相对有序的数列进行冒泡排序时,可能循环排序一遍这个数列就变得有序了,如:{1,2,3,4,5,7,6,8,9},只需要7和6调换一次数列就有序了。只要一次冒泡的过程没发生交换行为其实我们就可以判定 阅读全文
posted @ 2021-04-02 13:07 鸭梨的药丸哥 阅读(15) 评论(0) 推荐(0)