- 博客(10)
- 收藏
- 关注
原创 Day.10基数排序
基数排序原理是将数组分到有限数量的桶子里,然后对每个桶子再分别排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序进行排序),最后将各个桶中的数据有序的合并起来。找出待排序数组中的最大值max、最小值min我们使用 动态数组ArrayList 作为桶,桶里放的元素也用 ArrayList 存储。桶的数量为(max-min)/a.length+1遍历数组 a,计算每个元素 a[i] 放的桶...
2019-09-30 13:28:15 106
原创 Day8.计数排序
计数排序当输入的元素是 n 个 0 到 k 之间的整数时,它的运行时间是 Θ(n + k)。计数排序不是比较排序,排序的速度快于任何比较排序算法。由于用来计数的数组C的长度取决于待排序数组中数据的范围(等于待排序数组的最大值与最小值的差加上1),这使得计数排序对于数据范围很大的数组,需要大量时间和内存。例如:计数排序是用来排序0到100之间的数字的最好的算法,但是它不适合按字母顺序排序人名。但...
2019-09-30 09:20:37 164
原创 Day6.快速排序
快速排序1.首先从数列中挑出一个元素,称为“基准”2.接着重新将数列排序,所有比基准小的元素摆放在基准的前面,所有比基准大的数都排在基准的后面,相同的数可以放在任何一边。这个就是分区操作。3.最后再递归把小于基准的子数列和大于基准的子数列排序完成。...
2019-09-30 09:20:03 114
原创 Day4.希尔排序
希尔排序,是插入排序的一种更高效的改进版本,但希尔排序是非稳定排序算法。希尔排序是基于排序的以下两点性质提出改进的:一,插入排序在对几乎已经排好的数据操作时,效率高,可以达到线性排列的效率二,数据数目较少且基本有序,可以使得插入排序这种邻位移动的次数不会太多,所以此时效率较高。但插入排序一般来说是低效的,因为插入排序每次只能将数据移动一位三,它的基本思想: 首先将整个待排序的序列分割成为若...
2019-09-30 09:16:37 78
原创 Day5.归并排序
归并排序1.归并排序是建立在归并操作上的一种有效排序算法,它是分治法的典型应用。将已有的子序列合并,,得到完全有序的序列;先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个合并成一个有序表,称二路合并。...
2019-09-20 21:19:38 66
原创 Day02.算法选择排序
1.选择排序的思想就是对序列从头至尾的选择,得到最小的元素,和第一个元素进行交换,接着重复此操作,最终得到一个有序的序列。它输出的就是原序列的一个重排{a1,a2,a3,a4,a5};使得a1<=a2<=a3<=a4<=a52.思想n个记录的文件的直接选择排序可经过n-1趟直接选择排序得到有序的结果(1)初始状态:无序区{a1,a2,a3,a4,a5};...
2019-09-16 16:37:27 87
原创 Day01.算法冒泡排序
冒泡排序是将第一个元素与第二个元素比较,把小的元素往前调或者把大的元素往后调,接着第二个元素与第三个元素排序,循环操作,(到最后一个就不需要再排序了),直到最后没有再需要交换的元素。这种方法比较是两个相邻元素的比较,直到没有任何两个相邻元素需要比较。对排序,要有降维的思想,有时候二维的数组类似排序的问题,可以用一维的数组解决。public void a(int[] list) {int tem...
2019-09-04 08:20:10 97
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人