数据结构
文章平均质量分 69
middlekingt
工作2年
展开
-
图解排序算法
排序(Sort)1、冒泡排序(Bubbler Sort)前面刚说了冒泡排序的坏话,但冒泡排序也有其优点,那就是好理解,稳定,再就是空间复杂度低,不需要额外开辟数组元素的临时保存控件,当然了,编写起来也容易。其算法很简单,就是比较数组相邻的两个值,把大的像泡泡一样“冒”到数组后面去,一共要执行N的平方除以2这么多次的比较和交换的操作(N为数组元素),其复杂度为Ο(n²),如图转载 2012-12-24 16:44:30 · 1106 阅读 · 0 评论 -
赌博算法之约瑟夫环问题(JAVA)
/** * 典故:据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中, * 39个犹太人决定宁愿死也不要被敌人到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人 开始报数,每报数到第3人 * 该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。然而Josephus 和他的朋原创 2012-12-28 11:04:07 · 2691 阅读 · 0 评论 -
排序算法之基数排序(JAVA)
public class RadixSort { /** * 基数排序 * 简介:基数排序法又称“桶子法”,顾名思义,它是透过键值的部份资讯,将要排序的元素分配至某些“桶”中,藉以达到排序的作用 * 其时间复杂度为O (nlog(r)m),其中r为所采取的基数,而m为堆数 * 稳定排序方式 * @param nums 待排序数组 * @d 基数 */ public原创 2012-12-28 11:00:49 · 1908 阅读 · 0 评论 -
排序算法之归并排序(JAVA)
public class MergeSort { /** * 归并排序 * 简介:将两个(或两个以上)有序表合并成一个新的有序表 即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列 * 时间复杂度为O(nlogn) * 稳定排序方式 * @param nums 待排序数组 * @return 输出有序数组 */ public s原创 2012-12-28 10:59:36 · 58782 阅读 · 31 评论 -
查找算法之二分法查找(JAVA)
public class BinarySearch { /** * 二分查找 * 简介: 在二分搜寻法中,从数列的中间开始搜寻,如果这个数小于我们所搜寻的数,由于数列已排序,则该数左边的数一定都小于要搜寻的对象, * 所以无需浪费时间在左边的数;如果搜寻的数大于所搜寻的对象,则右边的数无需再搜寻,直接搜寻左边的数。 * @param nums 待查找数组 * @num 待原创 2012-12-28 11:01:47 · 29492 阅读 · 6 评论 -
排序算法之直接插入排序(JAVA)
public class InsertSort { /** * 将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据 * 时间复杂度为O(n^2) * 稳定排序方式 * @param nums 待排序数组 * @return 输出有序数组 */ public static void sort(int[] nums){ for (int i =原创 2012-12-25 09:15:37 · 792 阅读 · 1 评论 -
排序算法之希尔排序(JAVA)
public class ShellSort { /** * 对于n个整数排序,将这列数按d1增量分组,对各个分组进行直接插入排序,然后缩小增量,重新分组,对分组排序,直到增量值为1时停止。 * 希尔排序是插入排序算法的一种。又称 缩小增量排序 时间复杂度为O(nlog n) * 不稳定排序方式 * @param nums 待排序数组 * @return 输出有序数组原创 2012-12-25 09:13:39 · 779 阅读 · 0 评论 -
排序算法之选择排序(JAVA)
public class SelectSort { /** * 每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。 * 选择排序,分为简单选择排序、树形选择排序(锦标赛排序)、堆排序 此算法为简单选择排序 * 时间复杂度为O(n^2) * 不稳定排序方式 * @param nums 待排序数组 * @re原创 2012-12-25 09:05:14 · 774 阅读 · 0 评论 -
排序算法之冒泡排序(JAVA)
public class BubbleSort { /** * 由于在排序过程中总是小数往前放,大数往后放,相当于气泡往上升,所以称作冒泡排序。 * 时间复杂度为O(n^2) * 稳定排序方式 * @param nums 待排序数组 * @return 输出有序数组 */ public static void sort(int[] nums){ boolean is原创 2012-12-25 09:03:17 · 814 阅读 · 1 评论 -
排序算法之快速排序(JAVA)
public class QuickSort { /** * 1.先从数列中取出一个数作为基准数。 * 2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。 * 3.再对左右区间重复第二步,直到各区间只有一个数。 * 时间复杂度为O(nlog n) * 不稳定排序方式 * @param nums 待排序数组 * @return 输出有序数组原创 2012-12-25 09:12:32 · 971 阅读 · 1 评论