
算法
lordky
不甘心现在,那就得努力,少刷抖音小说多学习拓展新技能
展开
-
java常见的排序算法(四)计数排序、基数排序
一、计数排序主要思想该排序运用的场景比较少,主要运用在数据量比较大,但是取值范围比较小的情况下。比如说年龄。采用一个新的数组来存储原数组值对应的下标,值为原数组值出现的次数,最后再从头开始读取这个新数组的值就能得到相应的排序结果如图,定义一个新数组(计数数组),数组长度为原数组的取值范围最大值。初始化每个位置的值为0,遍历原数组,在新数组(计数数组)下标值为原数组位置上的值+1。最终遍历计数数组,写入原数组,比如从a0的值为2,原数组的头2两就为0,0,a1值为2,就继续写两个1,以此类推,得原创 2022-04-02 09:44:11 · 243 阅读 · 0 评论 -
java常见的排序算法(三)快速排序
主要思想:其实就是在一个数组中找到一个轴,将大于这个轴的数放一边,小于这个轴的数放另一边,这样就把数组分成了两部份,然后递归分别将前后两部分再找一个轴,做相同操作,直至排列完全这里有一个轴的概念,这个轴其实就是数组中任意取一个值,一般取边界值。经典的快速排序中,采用的是单轴快排,而改进版的采用了双轴快排。咱们先瞅瞅单轴:如图,选取数组中边界9为轴,定义两个指针,i,j分别从两端往中间遍历,当i遇到比轴大的就与j比轴小的值进行交换这样最终将轴与i+1进行交换,得到一次的循环的结果,然后将轴排好的原创 2022-03-30 09:25:55 · 1123 阅读 · 0 评论 -
java常见的排序算法(二)归并排序,TimSort
主要就是采用递归的思想将数组切分为两个排好序的两个数组,然后将两个数组合并为一个。此排序算法稳定,对象的排序一般都采用此排序如图:将数组切分为两个排好序的数组,并定义两个指针,i与j,新开辟一个数组空间,比较i与j的大小,i<j则将i的值插入新数组的头部,并将i的指针+1,以此类推,就会得到一个排好序的数组。当然这种排序的时间复杂度较低,为nlog2n,但是由于会开辟新的数组空间,所以,在空间复杂度上会高一些,为n/** * @param needSort 需要排序的数组 * @para原创 2022-03-28 18:09:18 · 769 阅读 · 1 评论 -
java常见的排序算法(一)选择排序,冒泡排序,插入排序,希尔排序
1.选择排序所有排序中最简单也是最没有用的一种排序算法,主要的思想就是,多次循环,依次找出最大致最小的值。时间复杂度为n的平方private static int[] sortArray(int[] arr){ for (int i = 0; i < arr.length; i++) { int min=arr[i]; for (int j = i+1; j < arr.length; j++) { if (min>=ar原创 2022-03-26 19:18:32 · 900 阅读 · 0 评论