![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
黑曼巴dengyanliang
时常保持一颗奋进的心!
展开
-
插入排序
插入排序的基本思想:首先选择第一个元素作为有序部分,从第二个元素开始到结尾作为无序部分。从无序部分的第一个元素开始,和有序部分的最后一个元素开始向前进行比较,直到找到正确的位置为止。 /** * 对从开始位置和结束位置的元素进行排序 * @param a 原始数组 * @param first 开始位置 * @param last 结束位置 */ public stati原创 2016-04-27 12:40:41 · 317 阅读 · 0 评论 -
选择排序
选择排序的基本思想:首先从所有元素中找到最小的元素,放在第一个位置,然后从剩余的元素中找到第二小的,放在第二个位置。/** * 对前N的数的数组进行排序 * @param a 数组 * @param n 前n个数 */ public static void selectionSort(int[] a,int n) { for(int index = 0; index <原创 2016-04-27 12:46:57 · 325 阅读 · 0 评论 -
冒泡排序
冒泡排序的基本思想:依次比较两个元素,如果发现前面的元素和后面的元素顺序不对,就进行交换。一趟循环走完,最值元素就放在最后的位置上了。 public static void buttleSort(int[] array){ // 总共比较的次数,即 n-1次 for(int i = 0; i < array.length - 1; i++){ // 每一趟结束后,最大值就在最后的原创 2016-04-27 22:47:21 · 343 阅读 · 0 评论 -
快速排序
快速排序的基本思想:通过一趟排序将要排序的数据分割成两部分,其中一部分的所有数据都比另外一部分数据小。然后使用递归进行操作。这里采用三平均分区法,即不是选择第一个元素作为中轴,而是选用待排序的最左边的元素,中间的元素和最右边的元素这三个元素中的中间值作为中轴。这样可以避免,本来这个序列是有序的,按照相反的顺序进行排序时,效率最低这种情况。并且防止数组越界。 /** * 对开始索引和结束原创 2016-04-27 23:01:10 · 376 阅读 · 0 评论 -
归并排序
归并排序的基本思想:采用分治法,先使每个子序列有序,再将有序的子序列进行合并,得到最终的有序序列。/** * 对拆分后的数组进行排序并合并 * @param a 原始数组 * @param tempArr 临时数组 * @param leftPos 左边有序序列的开始索引 * @param rightPos 右边有序序列的开始索引 * @param rightEnd 右边有序序列的原创 2016-04-27 22:39:35 · 367 阅读 · 0 评论