随笔分类 -  算法

摘要:原文链接:http://www.orlion.ga/201/ 一、划分算法 1、划分 划分是快速排序的根本机制。划分数据就是把数据分成两组,所有大于特定值的数据在一组,所有小于特定值的在一组。比如将{3,1,9,0,4,7,2,6,5,8}以特定值为5划分为{3,1,0,4,5}和{9,0,7,6, 阅读全文
posted @ 2016-04-03 21:52 orlion 阅读(5670) 评论(0) 推荐(0)
摘要:原文链接:http://www.orlion.ga/193/ 由上图可看到希尔排序先约定一个间隔(图中是4),然后对0、4、8这个三个位置的数据进行插入排序,然后向右移一位对位置1、5、9进行插入排序按照此规律直到全部参与了排序。然后将间隔约定为4-1=3,然后继续进行如上的排序方法。具体过程如下: 阅读全文
posted @ 2016-04-03 21:51 orlion 阅读(1202) 评论(0) 推荐(0)
摘要:/** * 插入排序 * * 原理:从数组中取出一个值插入到一个左边已经排好序的数组片段中 * * @param a * @return */ public long[] InsertSort(long[] a){ ... 阅读全文
posted @ 2015-09-08 21:33 orlion 阅读(180) 评论(0) 推荐(0)
摘要:/** * 选择排序 * * 原理:将最小值与数组第1个即array[0]交换,第二次则忽略array[0],直接从array[1]至array[array.length-1]中 * 选择出最小值与array[1]交换,以此类推 * * 与冒泡排序... 阅读全文
posted @ 2015-09-08 20:21 orlion 阅读(277) 评论(0) 推荐(0)
摘要:冒泡排序就是依次取出最大数,然后依次交换放到数组最后边。直观写法:public long[] sort(long[] a){ int n = a.length - 1; // Step:1 选出最大数 for(int i = 0 ; i a... 阅读全文
posted @ 2015-09-08 19:34 orlion 阅读(1344) 评论(0) 推荐(0)
摘要:public int find(long searchKey){ int i; int begin = 0; int end = nElems - 1; while(true){ ... 阅读全文
posted @ 2015-09-07 21:09 orlion 阅读(270) 评论(0) 推荐(0)