
排序算法
凌风暨
最怕你一生碌碌无为,还安慰自己平凡可贵
展开
-
希尔排序原理(java实现)
希尔排序也是排序算法的一种,先说他的定义,希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。(摘自百度百科) 看不懂,对吧,我用白话文说一说,其实他就是一个改良版的插入排序(插入排序可以参考我以前的博客),为什么这么说呢,如果你仔细去研究插入排序算法,很快就会发现,这种算法原创 2017-08-15 22:47:58 · 1572 阅读 · 2 评论 -
基数排序原理(java实现)
也是排序算法的一种,老规矩,先来看看百度百科的定义:基数排序(radix sort)属于“分配式排序”(distribution sort),又称“桶子法”(bucket sort)或bin sort,顾名思义,它是透过键值的部份资讯,将要排序的元素分配至某些“桶”中,藉以达到排序的作用,基数排序法是属于稳定性的排序,其时间复杂度为O (nlog(r)m),其中r为所采取的基数,而m为堆数,原创 2017-08-16 23:31:01 · 1359 阅读 · 5 评论 -
选择排序原理(java实现)(错,不是真正的选择排序,正确的已发出)
排序是数组中经常用到的功能,这里主要讲选择排序1、选择排序 选择排序,就是依次固定每个下标,让每个固定下标的数和后面所有数据进行比较,假定现在有一个整型数组{23,4,56,166,2},对它进行从小到大选择排序 先固定下标0,也就是第一个数23,与下标为1,第二个数4进行比较,发现第二个数4比第一个数23小,那么就将23和4进行交换,变为{4,23,56,166,2},接下来还是下标0原创 2017-08-10 19:11:13 · 481 阅读 · 1 评论 -
冒泡排序原理(java实现)
冒泡排序也是排序算法中的一种,他的排序方式是把下标相邻的两个数进行比较,从小到大排序,下标相邻的两个数,如果后面的数小于前面的数,就进行交换,大于则不交换,继续比较下一组数据,直到比完最后一组数据,这个数组中最大的数就冒出来了,举个例子: 假定现在有一个整型数组{23,5,41,166,17},我们要对他进行冒泡排序,首先是下标0和下标1进行比较,下标1中的数据5小于下标0中的数据23,将两者进行原创 2017-08-11 18:19:38 · 752 阅读 · 0 评论 -
插入排序原理(java实现)
插入排序也是排序算法的一种,他的排序定义是这样:把一个数插入到一个有序数列的合理位置,并使插入后数列仍然有序,不断重复这个过程,就能使整个数组成为有序数列。 听起来很难理解,对吧,不如我们举个例子,假定一个整型数组{7,5,6,4,3,1,2},对他进行从小到大的排序,按照定义说的,把一个数插入到一个有序数列的合理位置,什么是有序数列呢,哪里来的有序数列呢,本来就是让变得有序,原来就有原创 2017-08-12 18:58:51 · 424 阅读 · 0 评论 -
归并排序原理(java实现)
归并排序也是排序算法的一种,它是将两个已经排好序的数组,合并成另一个排好序的数组,原理是这样的:定义一个新数组,再定义两个指针,分别指向两个已经排好序的数组的第一个元素,然后两者进行比较,较小的那个数放到新定义的那个数组的第一个位置,同时,将较小的那个数的下标加1,再跟刚刚比他大的那个数比较,两者中较小的数就放到新数组里面,最后比较完之后,若其中一个数组有剩余的元素没有比较,就将剩余的元素直接插入到原创 2017-08-14 03:33:42 · 1618 阅读 · 2 评论 -
快速排序原理(java实现)
快速排序也是排序算法的一种,他的基本思想是这样的:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。(摘自百度百科) 好,上面的东西,很难理解,很难想象,我知道,那咱们还是举个例子,假定现在有一个整型数组{1,2,6,8,5,3,4,7,原创 2017-08-14 18:37:50 · 419 阅读 · 0 评论 -
堆排序原理(java实现)
堆排序(Heapsort)是指利用堆积树(堆)这种数据结构所设计的一种排序算法,它是选择排序的一种。可以利用数组的特点快速定位指定索引的元素。(摘自百度百科) 想知道什么是堆排序,就得先知道什么是堆,堆分为两种,大根堆和小根堆,什么是大根堆小根堆呢?那你得先知道完全二叉树,什么是完全二叉树?完全二叉树,若设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个原创 2017-08-18 21:41:35 · 4323 阅读 · 3 评论 -
选择排序原理(java实现)(对之前博客说法的改正)
假定现在有一个整型数组{23,4,56,166,2},对它进行从小到大选择排序 要找最小值,首先在下标为0-4这5个数中找到最小值,与第一位交换,再从下标为1-4这四个数中找到最小值,与第二位交换,再从下标为2-4这三个数中找到最小值,与第三位交换,在从下标为3-4这两个数中找到最小值,与第四位交换,整个数组就排好序了第一次,找到最小值2,与第一位交换,数组变为:2,4,56,166,23...原创 2018-08-03 14:44:15 · 254 阅读 · 1 评论