
数据结构
文章平均质量分 73
DM喵小弟
在大数据的路上翻滚中...
展开
-
【数据结构】Java实现各类经典排序算法——选择排序、冒泡排序
一、选择排序 顾名思义,选择排序就是每次选出待选数组中最大的元素,放到待选数组右侧即可。为了实现O(1)的空间复杂度呢,这个放到右侧的操作通过元素在数组间交换来进行。 第一次扫描整个大小为n的数组,最大的放数组最右边;此后从左到右扫描数组前n-1、n-2...项,因为数组右端已经排序完成。下面是代码实现: public void chooseSort(int[] nums) {...原创 2018-02-20 23:36:14 · 248 阅读 · 0 评论 -
【数据结构】Java实现各类经典排序算法——插入排序、希尔排序
一、插入排序 顾名思义,插入排序从左往右扫描数组,每趟排序把一个元素“插入”到已排序部分数组的合适位置中。既然是“插入”,则不必两两交换元素来进行排序,从逻辑上把当前元素放到合适位置,并把该位置右侧部分元素往右移动一格就可以了。这样做和冒泡排序的交换相邻元素比,好处在于“交换”的动作被“赋值”取代,因此效率要高一些。这种操作在堆排序中也可以见到。以下是代码实现: public void...原创 2018-02-21 12:02:56 · 263 阅读 · 0 评论 -
【数据结构】Java实现各类经典排序算法——快速排序、归并排序
快速排序和归并排序,两种算法都是分治法的经典表现,递归形式写起来也水到渠成。一、快速排序 快速排序的递归程序主要分三部分:驱动程序、递归主程序、中枢点(pivot)选取。前两部分用来实现快排的中心思想,把中枢点放到某个位置,使得该位置左侧元素均不大于中枢元素,右侧元素均不小于右侧元素。算法属于就地排序,通过交换元素在数组中的位置来进行。 中枢点的选取,主要会在原始数组不完全随机的情况下...原创 2018-02-21 13:05:04 · 304 阅读 · 0 评论 -
【数据结构】Java实现各类经典排序算法——桶排序、堆排序
一、桶排序 桶排序作为非通用的排序算法,桶的数量要根据原数组中元素大小分布来确定。为方便说明和测试,此处以LeetCode75——Sort Colors的题目为代码环境。 题目大意:原数组包含若干个0、1、2,对原数组进行排序。 1. 创建大小为3的数组(3个桶),各元素初始值为0。数组第1、2、3位的值分别代表原数组中0、1、2的数目; 2. 扫描原数组,更新各桶的值; ...原创 2018-02-21 13:37:35 · 687 阅读 · 0 评论