加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营 > 正文

Java快速排序和归并排序详解

发布时间:2020-12-31 04:02:31 所属栏目:运营 来源:网络整理
导读:div class="article" div class="show-content" data-note-content="" div class="show-content-free" 快速排序 概述 快速排序算法小心的是二叉树前序遍历的头脑,最终对数组举办排序。 利益: 对付数据量较量大的数组排序,因为回收的具有二叉树二分的头脑

<div class="article">
<div class="show-content" data-note-content="">
<div class="show-content-free">

快速排序

概述

快速排序算法小心的是二叉树前序遍历的头脑,最终对数组举办排序。

利益:

对付数据量较量大的数组排序,因为回收的具有二叉树二分的头脑,故排序速率较量快

范围

只合用于次序存储布局的数据排序(数组 ,ArrayList等),不合用于链式的数据布局

算法实现思绪

一.将方针数组转化为这样一个数组。数组中的某个位置左边的全部数据都比该位置的数据小,该位置右边的数据都比该位置数据大。

实现思绪:

1.取出数组第0个数据
3.改变遍历偏向,从左边开始开始遍历,假如发明左边的数据比第0个位置的数据大,将该位置的数据赋值给2步调逗留下来的位置,并调动偏向。

4.轮回2、3步调直到阁下遍历到的下标重合 5.将取出的第0个位置的值赋值给轮回竣事后阁下指针逗留下的位置

二. 小心前序遍历的思绪,递归,最终完成排序。

代码实现

quickSort([] array, start, (start >= key = left = right = direction = (left < ( i = right; i > left; i-- (array[i] < array[left++] = right = direction = ! right = } ( i = left; i < right; i++ (array[i] > array[right--] = left = direction = ! left = array[left] = quickSort(array,start,left - 1 quickSort(array,left + 1 }

功效测试

[] array = []{1,3,4,10,2,5,6,9,7,8 quickSort(array,array.length - 1 ( i = 0; i < array.length; i++ }

功效打印

1 2 3 4 5 6 7 8 9 10 合并排序

概述

合并排序与快速排序沟通,同样是小心二叉树的头脑,时刻伟大度O(n),与快速排序一样是大量数据排序的最优方法之一。

思绪说明

合并排序是将方针数组分成阁下两个数组,阁下两个数组必需是有序的,然后对这两个数组归并从而实现排序。对付恣意的数组都可以将全部的数据分成多少个数组,每个数组中都只有一个元素,然后两两归并。(因此,合并排序的内存开销会比快速排序多)

代码实现

mergeSort([] array, left, (left >= mid = (left + right) >> 1 mergeSort(array,mid + 1 merge(array,right); merge([] array, mid, leftSize = mid - rightSize = right - mid + 1 [] leftArray = [] rightArray = System.arraycopy(array,leftArray,0 System.arraycopy(array,mid,rightArray,rightSize); index= leftIndex = 0 rightIndex = 0 (leftIndex

测试代码

[] array = []{1,8 mergeSort(array,array.length - 1 ( i = 0; i < array.length; i++ }

功效打印

1 2 3 4 5 6 7 8 9 10

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读