java排序算法
EatingSoilLang
这个作者很懒,什么都没留下…
展开
-
java实现快速排序算法
快速排序1、算法思想快速排序是由冒泡排序改进而得到的,是一种分区交换排序方法。思想如下:一趟快速排序采用从两头向中间扫描的方法,同时交换与基准记录逆序的记录。(1)在待排序的N个记录中任取一个元素(通常取第一个记录)作为基准,称为基准记录;(2)定义两个索引 left 和 right 分别表示“首索引” 和 “尾索引”,key 表示“基准值”;(3)首先,尾索引向前扫描,直到找到比基准值小的记录(left != righ),并替换首索引对应的值;(4)然后,首索引向后扫描,直到找到比基准值大于转载 2020-12-18 15:34:13 · 6252 阅读 · 2 评论 -
java实现希尔排序算法
希尔排序1、算法思想希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。简单插入排序很循规蹈矩,不管数组分布是怎么样的,依然一步一步的对元素进行比较,移动,插入,比如[5,4,3,2,1,0]这种倒序序列,数组末端的0要回到首位置很是费劲,比较和移动元素均需n-1次。而希尔排序在数组中采用跳跃式分组的策略,通过某个增量将数组元素划分为若干组,然后分组进行插入排序,随后逐步缩小增量,继续按转载 2020-12-18 15:25:26 · 1033 阅读 · 0 评论 -
java利用二分法进行排序
二分法排序二分法排序是直接插入排序的改进版本,直接插入排序插入到前方集合中时采用的方式是逐个比较,二分法则是采用二分比较,与直接排序算法最大的区别在于查找插入位置时使用的是二分查找的方式,在速度上有一定提升。1、算法思想总共有N个元素,当插入第i个元素时,对前面的0~i-1个元素进行折半,先跟他们中间的那个元素比,如果小,那么再对前一半的元素进行折半,否则对后一半的元素进行折半,知道左<右,然后再把第i个元素前一位于目标位置之间的所有元素后移,再把第i个元素放在目标位置上。举例:例如有个原创 2020-12-18 15:13:29 · 5093 阅读 · 1 评论 -
java实现直接插入排序
直接插入排序1、算法思想将一个记录插入到已排好序的序列中,从而得到一个新的有序序列(将序列的第一个数据看成是一个有序的子序列,然后从第二个记录逐个向该有序的子序列进行有序的插入,直至整个序列有序)重点:使用哨兵,用于临时存储和判断数组边界。2、代码实现 public static void main(String[] args) { int arr[] = {2,1,5,3,6,4,9,8,7}; int temp; for (int i=1原创 2020-12-18 14:53:12 · 2752 阅读 · 0 评论 -
java实现选择排序算法
选择排序1、算法思想(1)找到所有数中最小值下标(2)第一趟循环将最小值的下标与第一个位置的数值交换位置,这样每次找到的最小值则固定到第一个(3)第二趟循环从第二个开始继续上边的步骤,因为上一趟已经将最小的找到并放到了第一个的位置,因此第二趟只需从第二个数值开始比较。2.代码实现:public static void selectionSort(int[] nums) { if (nums == null || nums.length < 2) { return原创 2020-12-18 14:44:19 · 861 阅读 · 1 评论 -
java实现冒泡排序算法
冒泡排序1.算法思想:类似于水中冒泡,较大的数沉下去,较小的数慢慢冒起来,假设从小到大,即为较大的数慢慢往后排,较小的数慢慢往前排。实现步骤:(1)两两比较(第一个数跟第二个数比较,第二个数跟第三个数比较,知道倒数第二个数跟倒数第一个数比较完),如果前者比后者大则交换位置。(2)第一趟最后一个数肯定是最大的数。(3)第二趟将第二大的数移动至倒数第二位。(4)第三趟将第三大的数移动至倒数第三位。(5)因此循环n-1次才能将顺序排好。2.代码实现:private int[] array =原创 2020-12-18 14:32:45 · 1344 阅读 · 0 评论