排序
介绍有关各类排序算法
99滴神
希望与大家共同进步!加油!
展开
-
快速排序
算法思路:每次选择一个元素pivot作为枢轴,将比pivot大的元素放到他的右边,比pivot小的元素放到他的左边,从而确定了pivot的位置。将pivot左右两个子表进行同样的操作,循环递归,直至结束。 性能分析: 时间复杂度与划分是否对称有关,最坏O(n^2),最好、平均O(nlogn) 空间复杂度与递归调用深度有关,最好、平均O(logn),最坏O(n) 稳定性: 不稳定 注:快速排序是所有内部排序中算法性能最好的排序 int...原创 2021-03-10 15:48:11 · 60 阅读 · 0 评论 -
冒泡排序
算法思路:从第一个元素开始,依次比较相邻的两个元素,如果前面的元素大于后面的元素,则交换他们的次序,一趟下来最大的元素的位置就确定了,依次类推,第二趟的时候就确定了第二大元素的位置,进行n-1躺就能确定所有元素的位置。 性能分析: 空间复杂度O(1) 时间复杂度最好O(n),最坏、平均O(n^2) 稳定性: 算法稳定 void bubbleSort(int[] arrays) { for (int i = arrays.length - 1...原创 2021-03-10 15:40:39 · 69 阅读 · 0 评论 -
简单选择排序
算法思路: 每次在待排序序列中选取一个最小的元素放入已排好序列最后,总共进行n-1趟就能完成排序。 性能分析: 时间复杂度: O(n^2) 空间复杂度: O(1) 稳定性: 不稳定 void selectSort(int[] arrays) { /* 9 8 7 10 6 第一趟: 走三次 9 只需与8 7 ...原创 2021-03-10 15:36:10 · 71 阅读 · 0 评论