![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
排序算法
空心菜啊啊
这个作者很懒,什么都没留下…
展开
-
直接选择排序和堆排序
直接选择排序:从头到尾比较数组元素,找到数组中最小的数,跟数组中的第一个元素进行交换;然后继续进行比较,找到除了数组中第一给位置以外的最小的元素,把他和数组第二个元素进行交换,重复以上步骤 例如: 数组: 6,1,2,9,7 第一次:1,6,2,9,7 第二次:1,2,6,9,7 第三次:1,2,6,9,7 第四次:1,2,6,7,9 第五次:1,2,6,7,9 public static ...原创 2019-10-23 14:33:40 · 168 阅读 · 0 评论 -
归并排序
归并排序采用分治法,将待排序的元素分成两个长度相等的子序列,为每一个子序列排序,排序完,再把他们合并成一个子序列;合并两个子序列的过程叫做二路归并 ...原创 2019-10-22 21:33:35 · 87 阅读 · 0 评论 -
希尔排序
希尔排序是插入排序的一种,也叫缩小增量排序,是直接插入排序的改进,是一种非稳定的排序算法 他交换的是不相邻的元素已对数组进行局部排序,首先需设置一个增量step一般为length/2,他先使数组中任意间隔为step的元素有序,遍历一遍之后,把增量除二,得到新的增量,再重复以上的步骤 public static int[] shellSort(int[] a){ int length=a.len...原创 2019-10-22 16:24:15 · 80 阅读 · 0 评论 -
插入排序和优化
刚开始的时候,把左面的第一个数当作是有序的,把从第二个数为起始,以最后一个数为终止,作为无序的,此时数组呗分为有序和无序的两个小数组 因为默认左面的第一个是有序的,所以i从1开始 public static int[] insertionSort(int[] a){ int length=a.length; for(int i=1;i<length;i++){ for(int j=i...原创 2019-10-22 11:17:52 · 94 阅读 · 0 评论 -
快速排序算法和优化
快速排序算法又称为划分交换排序,是对冒泡排序的一种改进,还是采用分治法 先设置一个关键字key作为比较对象(一般取数组的最前或最后的数),key=length-1 设置两个变量left=0,right=length-2 left一直往后走,直到找到一个大于key的值,left停下;此时right一直往前走直到找到一个小于key的值,停下;此时两数交换 重复操作,直到left和right同时指向一个...原创 2019-10-21 22:16:23 · 123 阅读 · 0 评论 -
冒泡算法和优化
双层for循环,外层负责要总体循环的次数(n-1),内层外循环负责一次外层for循环里面的两两数字比较的次数,通过内层for循环,每完成一次外层for循环,就会确定一个最大(最小)的数 简单实现 public static int[] bubbSort(int[] a){ int length=a.length;//防止for循环中重复计算长度 for(int i=0;i<length...原创 2019-10-20 14:55:45 · 131 阅读 · 0 评论