
八大排序
ZtCling
热爱代码,欢迎交流
展开
-
八大排序之希尔排序
基本思路: 希尔排序实际上是,定义一组增量在增量内进行插入排序,并逐步缩小这个增量,(因此它又称缩小增量排序) 时间复杂度: O(n^(1.3-2)) 尔排序没有时间复杂度为O(n(logn))的快速排序算法快 ,因此对中等大小规模表现良好,但对规模非常大的数据排序不是最优选择 空间复杂度: 常数阶O(1) 图解: 假设存在一个长度为8的无序数组 , 第一步 在第一次定义增量时,增量为四组,在每一组内部使用插入排序来交换位置 第二步 第二次缩小增量,增量缩减为2组,在每...原创 2022-04-11 16:12:08 · 764 阅读 · 0 评论 -
八大排序之快速排序
基本思想: 首先设置两个指针i和j,和一个基准数(基准数一般为第一个数)。令指针i指向arr[0],指针j指向arr[arr.length-1]。先让j向前移动,当j找到一个比基准数小的数的时候停止移动。然后让i向前进行移动,当i找到一个比基准数大的数的时候停止移动。然后让指针i和指针j位置的数据进行互换。最终指针i和指针j会指向同一个位置,然后让基准数与之互换。第一轮排完序后会发现:基准数左侧的数据都比基准数小,右侧的数据比基准数大。第一轮以后,将左右两侧看作两个新的数组,采用递归的方式按第一轮排序的方原创 2022-03-10 16:20:26 · 265 阅读 · 2 评论 -
八大排序之选择排序
基本思想:将待排序数列区分为有序和无序区,初始时有序区没有内容,从无序区选择出最大或者最小的数字,插入到有序区的最后,直至无序区为空时完成排序。 时间复杂度:均时间复杂度为 O(n ^ 2) 空间复杂度:O(1) 算法稳定性:非稳定算法 实质:内层循环找出最小值并与数组左边的交换,外层循环进行数组从左到右排序,从小到大排序。 代码实现: public static void main(String[] args) { int arr[] = new int [] {1,5,3,5,9,原创 2022-03-04 22:57:51 · 159 阅读 · 0 评论 -
八大排序之冒泡排序
基本思路:对一组要排序的元素列,依次比较相邻的两个元素,将小的放在前面,大的放在后面。每两个元素依次进行。直到完成一轮后,重复步骤直至没有元素可以进行交换为止。 时间复杂度:O(n²) 空间复杂度:O(1) 算法稳定性:稳定排序算法 实质:通过比较元素位置实现排序 代码实现: public class sss { public static void main(String[] args) { int arr[] = new int [] {1,5,3,5,9,6,9,5}原创 2022-03-04 16:44:10 · 249 阅读 · 0 评论