算法
hello_world_Q
wx:19855357869
展开
-
排序算法之快速排序
快速排序。 * 从数组中取出一个基准数,遍历数组中的每个元素,与基准数比较大小,将小于基准数的元素放在其左侧,大于基准数的元素放在其右侧, * 在分好后的两侧内递归执行上述操作 时间复杂度O(nlog2n); 空间复杂度O(log2n); **不稳定 static void quickSort(int[] array, int left, int right) { if (left >= right) { return; } ..原创 2021-02-26 15:24:01 · 99 阅读 · 0 评论 -
排序算法之归并排序
归并排序 * 数组分为左右两个子数组,按序依次比较子数组中每个元素大小,将小的元素放入新的临时数组中。 时间复杂度O(nlog2n); 空间复杂度O(n); 稳定 public static void main(String[] args) { int[] array = {9, 6, 11, 3, 5, 12, 8, 7, 10, 15, 14, 4, 1, 13, 2}; System.out.println("=======归并排序=====...原创 2021-02-25 16:47:33 · 114 阅读 · 0 评论 -
排序算法之希尔排序
希尔排序。 * 设置一个偏移量,使用插入排序将间隔为偏移量的数组进行排序。每次排序结束后将偏移量缩小一倍,递归上述方法。 三重循环: * 外层循环:设置偏移量,每次循环将偏移量缩小一倍 * 中层循环:从偏移量开始,遍历数组中的每个元素 * 内层循环:中层循环得到的每一个元素,将其与其之前偏移量的元素进行比较,若小于,则交换位置 O(n²) /** * 希尔排序。 * 设置一个偏移量,使用插入排序将间隔为偏移量的数组进行排序。每次排序结束后将偏移量缩小一倍,递归上..原创 2021-02-25 12:00:14 · 145 阅读 · 1 评论 -
排序算法之插入排序
插入排序。 * 从第二个元素开始,遍历每一个元素,将其与其之前的元素比较,若比之前的元素小,则交换位置 双重循环: * 外层循环:从第二个元素开始遍历每一个元素 * 内层循环:遍历当前元素之前的每一个元素,比较其大小,若大于当前元素,则交换位置 O(n²) /** * 插入排序。 * 从第二个元素开始,遍历每一个元素,将其与其之前的元素比较,若比之前的元素小,则交换位置 * 双重循环: * 外层循环:从第二个元素开始遍历每一个元素 ...原创 2021-02-25 10:23:54 · 100 阅读 · 0 评论 -
排序算法之冒泡排序及其优化
冒泡排序: * 依次取出数组中的每个元素,将此元素与其之后的每个元素比较,若大于其后的元素,则交换位置 双重循环: * 外层循环:获取每次遍历的最大值 * 内层循环:遍历该元素后的每一个元素,与当前元素比较大小,若当前元素大,则交换位置 O(n²) 稳定 /** * 冒泡排序: * 依次取出数组中的每个元素,将此元素与其之后的每个元素比较,若大于其后的元素,则交换位置 * 双重循环: * 外层循环:获取每次遍历的最大值 * ...原创 2021-02-25 09:45:14 · 126 阅读 · 0 评论 -
排序算法之选择排序
选择排序: * 依次取出数组中的每个元素,遍历该元素后的每一个元素,找出小于该元素的元素索引,交换其位置。 双重循环: * 外层循环:遍历数组中的每一个元素。 * 内层循环:遍历该元素后的每一个元素,取出比外层循环取出的当前元素小的元素索引,与该元素交换位置。 时间复杂度:O(n²) public static void main(String[] args) { int[] array = {7, 6, 3, 8, 4, 1, 5}; for (int i :.原创 2021-02-24 17:14:45 · 77 阅读 · 0 评论