排序算法
排序算法
weixin_46248981
这个作者很懒,什么都没留下…
展开
-
快速排序的稳定性分析
https://blog.csdn.net/gaoxueyi551/article/details/89413936 快排之后的数组可能会出现失衡,算法复杂度可能上升到O(N2)。 程序恶化的原因:当游标所指向的元素同枢纽元相等时选择了继续前进,而不是停留在原地,这导致游标肆无忌惮的一路向前,根本没有顾忌到左右两个数组是否均衡,因此触发了大忌。 避免:当游标所指向的元素同枢纽元相等时,待在原地不动,左右游标指向的元素进行交换,再各自向前移动。 这样子进行了很多交换操作,这样枢纽元能够出现在数组中间位置,左右转载 2021-07-18 10:57:19 · 277 阅读 · 0 评论 -
选择排序(简单选择排序和堆排序)
选择排序 工作原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。 算法描述 public int[]selectionSort(int[]arr){ int min_index; for(int i = 0;i<arr.length-1;i++){ //最小数的索引 min_index = i; for(int j = i+1;j<arr.lengt原创 2021-04-30 22:03:39 · 59 阅读 · 1 评论 -
插入排序(简单插入排序,希尔排序)
插入排序 插入排序的算法是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序的数据,在已排序序列从后往前扫描,找到相应位置并插入。 算法描述 从第一个元素开始,该元素可以认为已经被排序 取出下一个元素,在已经排序的元素序列中从后向前扫描 如果该元素(已排序)大于新元素,将该元素移到下一位置 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置 将新元素插入到该位置后 重复步骤2-5 //基础版(类似于方向冒泡) public int[] insertSort(int[]arr){原创 2021-04-30 20:30:12 · 56 阅读 · 1 评论 -
冒泡排序和快速排序
冒泡排序 冒泡排序是一种简单的排序算法。它重复走过要排序的数列,一次比较两个元素,如果他们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。 算法描述 比较相邻的元素,如果第一个比第二大,就交换了他们 对每一对相邻元素做同样的事情,从开始第一队到结尾的最后一对,这样在最后的元素应该会是最大的数 针对所有的元素重复以上的步骤,除了最后一个 重复步骤1-3,直到排序完成 //基础版本,实现从小到大排序 public int[]bubbleSort1(in原创 2021-04-30 12:10:10 · 54 阅读 · 0 评论