算法
柠檬李先生
JavaScript 是世界上最流行的脚本语言!
展开
-
快速排序
1、思想:1962年由东尼.霍尔提出。其主要思想是从待排数列中选取一个作为key,从后找到第一个比key小的,从前找到第一个比key大的,进行交换,一次循环过后,key前的数值都比key小,key后的数值都比key大。可使用递归,是分治策略的体现。2、代码:/** * 快速排序:从后找第一个比key小的,从前找第一个比key大的, 一次循环过后 * key前的都比key小key后的原创 2016-05-17 16:39:06 · 328 阅读 · 0 评论 -
冒泡排序
1、思想冒泡排序的思想是小数往上浮,大数向下沉,并且沉下去的数下次不再处理,而向上浮的过程要一遍又一遍。排序算法的核心是比较交换,查找算法的核心是比较;2、代码/** * 冒泡排序算法 * * @param src * 原始数据数组 * @return 有序数据数组 */ private static > T[] bubbleSort(原创 2016-09-22 15:11:50 · 383 阅读 · 0 评论 -
简单选择排序
1 思想:循环进行比较选择出最小的或则最大的那个数进行交换。2 代码:/** * 简单选择排序 * @param src */ private static > void selectSort(T[] src) { int length = src.length; for (int i = 0; i < length; i++) { int position原创 2016-10-23 16:25:58 · 328 阅读 · 0 评论 -
顺序查找
1 思想:一个一个的比较,针对无序表的查找。2 代码/** * 顺序查找 * * @param src * @param key * @return */ private static > int orderSearch(T[] src, T key) { int length = src.length; for (int i = 0; i < le原创 2016-10-19 14:20:42 · 641 阅读 · 0 评论 -
折半查找
1、思想从一堆有序数列中查找某一关键字所在位置。以由小到大数列为例:首先和这堆数列的中间数进行比较,若相等则此中间数位置即为所查找关键字位置;若比中间数大,则此关键字肯定在中间数位置之后;若比中间数小,则此关键字肯定在中间数位置之前;2、代码/** * 折半查找算法 * * @param src * 原始数据数组 * @param k原创 2016-09-22 14:31:52 · 405 阅读 · 0 评论 -
直接插入排序
1 思想:向有序序列中依次插入待排元素,保证元素插入后的序列有序,直到待排元素插完为止。2 代码/** * 直接插入排序 * * @param src */ private static > void insertSort(T[] src) { int i; // 外层循环用于插入n-1个数 int j; // 内层循环用于查找插入位置 int leng原创 2016-10-19 15:10:22 · 336 阅读 · 0 评论 -
希尔排序
1 思想:希尔排序又称缩小增量排序,它是直接插入排序的一种改进。因为直接插入排序在数列有序的情况下性能可达O(n),希尔排序就是把一组序列按增量d分成d组,然后对每组进行直接插入排序,使每组组内有序,然后缩小增量d重新分组,如此反复到增量为1。2 代码/** * 希尔排序 插入排序 * * @param src */ private static > void shel原创 2016-10-20 14:23:50 · 357 阅读 · 0 评论