Java语言 及 数据结构
以梦为马-LEE
以梦为马,不负韶华
展开
-
冒泡排序算法
package sort; /** * BubbleSort * 冒泡排序算法: * 基本思想:每次从数组末端开始比较相邻两元素,把第i小的冒泡到数组的第i个位置。 * i从0一直到N-1从而完成排序。 * (当然也可以从数组开始端开始比较相邻两元素,把第i大的冒泡到数组的第N-i个位置。i从0一直到N-1从而完成排序。) * */ public class BubbleSor原创 2014-03-31 22:57:39 · 652 阅读 · 0 评论 -
希尔排序算法
package sort; /** * ShellSort * 希尔排序算法(最小增量排序): * 基本思想:算法先将要排序的一组数按某个增量d(n/2,n为要排序数的个数)分成若干组, * 每组中记录的下标相差d.对每组中全部元素进行直接插入排序, 然后再用一个较小的增量(d/2)对它进行分组,在每组中再进行直接插入排序。 * 当增量减到1时,进行直接插入排序后,排序完成。 *原创 2014-03-31 23:01:40 · 527 阅读 · 0 评论 -
基数排序算法
package sort; import java.util.Arrays; /** * RadixSort * 基数排序算法: * 基数排序的总体思路就是将待排序数据拆分成多个关键字进行排序 * */ public class RadixSort { private int countStep = 0; public void sort(int[] in原创 2014-03-31 23:21:18 · 631 阅读 · 0 评论 -
快速排序算法
package sort; /** * QuickSort * 快速排序算法: * 基本思想: * 1)选择一个枢纽元素(有很对选法,我的实现里采用去中间元素的简单方法) * 2)使用该枢纽元素分割数组,使得比该元素小的元素在它的左边,比它大的在右边。并把枢纽元素放在合适的位置。 * 3)根据枢纽元素最后确定的位置,把数组分成三部分,左边的,右边的,枢纽元素自己,对左边的,右边的原创 2014-03-31 23:02:36 · 595 阅读 · 0 评论 -
归并排序算法
package sort; /** * MergeSort * 归并排序算法: * 1.申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列 * 2.设定两个指针,最初位置分别为两个已经排序序列的起始位置 * 3.比较两个指针所指向的元素,选择相对小的元素放入到合并空间,并移动指针到下一位置 * 4.重复步骤3直到某一指针达到序列尾 5.将另一序列剩下的所有元素直原创 2014-03-31 22:59:58 · 501 阅读 · 0 评论 -
桶式排序算法
package sort; /** * BucketSort * 桶式排序算法: * 基本思想:桶式排序不再是一种基于比较的排序方法,它是一种比较巧妙的排序方式, * 但这种排序方式需要待排序的序列满足以下两个特征: * (1)待排序列所有的值处于一个可枚举的范围之类; * (2)待排序列所在的这个可枚举的范围不应该太大,否则排序开销太大。 * 排序的具体步骤如下:原创 2014-03-31 23:03:51 · 923 阅读 · 0 评论 -
堆排序算法
package sort; /** * HeapSort * 堆排序算法: * 基本思想:利用堆积树(堆)这种资料结构所设计的一种排序算法, 可以利用数组的特点快速定位指定索引的元素。 * 堆排序是不稳定的排序方法,辅助空间为O(1), 最坏时间复杂度为O(nlog2n) , 堆排序的堆序的平均性能较接近于最坏性能。 * * 大根堆排序算法的基本操作: * ① 初始化操作:将原创 2014-03-31 23:03:24 · 556 阅读 · 0 评论 -
插入排序算法
package sort; /** * InsertSort * 插入排序算法: * 基本思想:在要排序的一组数中,假设前面(n-1)[n>=2] 个数已经是排 * 好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数 * 也是排好顺序的。如此反复循环,直到全部排好顺序。 */ public class InsertSort { private int countSt原创 2014-03-31 22:59:07 · 590 阅读 · 0 评论 -
选择排序算法
package sort; /** * SelectSort * 选择排序算法: * 基本思想:(假设数据放在一个数组a中,且数组的长度是N) * 1:从a[0]-a[N-1]中选出最小的数据,然后与a[0]交换位置 * 2:从a[1]-a[N-1]中选出最小的数据,然后与a[1]交换位置(第1步结束后a[0]就是N个数的最小值) * 3:从a[2]-a[N-1]中选出最小的数据,然原创 2014-03-31 23:01:10 · 497 阅读 · 0 评论 -
StringBuffer 实现语句反转
这是一道面试题。问用StringBuffer在不使用新的String变量的情况下如何将一句英文反转。 如come on a little every day---->day every little a on come package com.lee.sstring; public class TestStringBuffer { public static void ma原创 2015-07-13 20:35:01 · 626 阅读 · 0 评论