![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
排序算法
qq_15037067
爱好算法,
展开
-
各种排序算法时间复杂度整理
(http://blog.chinaunix.net/uid-21457204-id-3060260.html)转载 2016-12-02 21:35:54 · 487 阅读 · 0 评论 -
快速排序及Java实现
一 快速排序算法 快速排序由于排序效率在同为 O(N*logN)的几种排序方法中效率较高,因此经常被采用。 步骤定基准——首先随机选择一个元素最为基准划分区——所有比基准小的元素置于基准左侧,比基准大的元素置于右侧递归调用——递归地调用此切分过程 二 代码实现public void quickSort(int[] a, int left, int right) {原创 2016-12-02 17:23:23 · 209 阅读 · 0 评论 -
归并排序及Java实现
一 归并排序算法 归并排序是采用分治法的一个非常典型的应用。归并排序的思想就是先递归分解数组,再合并数组。 首先考虑下如何将将二个有序数列合并。这个非常简单,只要从比较二个数列的第一个数,谁小就先取谁,取了后就在对应数列中删除这个数。然后再进行比较,如果有数列为空,那直接将另一个数列的数据依次取出即可。二 代码实现// 将有二个有序数列a[first...mid]和a[mid...原创 2016-11-30 21:27:57 · 238 阅读 · 0 评论 -
希尔排序及Java实现
一 希尔排序算法 算法基本思想是先把带排序元素序列分为若干个子序列(相隔某一增量元素组成),对子序列进行插入排序,然后依次缩减增量在排序,待整个序列基本有序后在对全体元素进行一次插入排序,因为直接插入排序在元素基本有序的情况下(接近最好情况),效率是很高的,因此希尔排序在时间效率上比前两种方法有较大提高二 代码 public static void sort(int[] arr)原创 2016-11-30 20:06:44 · 194 阅读 · 0 评论 -
插入排序及java实现
一 插入排序算法介绍 : 插入排序的原理是对每个未排序数据,在已排序数据中从后往前扫描,找到相应位置并插入步骤: 1. 从第一个元素开始,认为第一个元素已经排好序 2. 取出下一个元素,在已经排好序的元素中从后往前扫描 3. 如果扫描数据(已排序)大于新数据,将该元素后移 4. 如果扫描数据(已排序)小于等于新数据,停止扫描,将新元素插入该数据后 5. 重复歩骤2-4原创 2016-11-30 17:04:50 · 266 阅读 · 0 评论 -
选择排序及java实现
一 选择排序算法 1 在未排序序列中找出最大(小)元素放在排序序列起始位置 2 在从剩余未排序序列中找出最大(小)元素放在已排序序列末尾 3 重复直到所有元素已排序 二 代码 public static void sort(int[] arr) { for(int i=0; i<arr.length-1; i++)原创 2016-11-30 14:00:03 · 235 阅读 · 0 评论 -
冒泡排序java实现及优化
一 冒泡排序算法 1 相邻元素两两比较,大的放后面,第一次完毕,最大值在最大索引处 2 java代码实现 public static void bubbleSort(int[] arr) { for(int i=0; i原创 2016-11-30 09:06:14 · 744 阅读 · 0 评论 -
Permutation Sequence
1.题目给定 n 和 k,求123..n组成的排列中的第 k 个排列。1 ≤ n ≤ 9对于 n = 3, 所有的排列如下:123132213231312321如果 k = 4, 第4个排列为,231.原创 2016-12-29 11:03:56 · 173 阅读 · 0 评论 -
二分查找的三种方式
1 l while (l <= r) { int m = (l + r) / 2; if (num[m] == target) return m; else if (num[m] > target) r = m - 1; else l = m + 1;} 如果数组中有和target 相等的返回相等位置的下表 , 如果没有相等的l是原创 2017-08-13 10:25:42 · 838 阅读 · 1 评论