数据结构
rush2012
这个作者很懒,什么都没留下…
展开
-
选择排序,插入排序,冒泡排序
[code="java"] /* * 选择排序(Selection sort)、插入排序(Insertion sort)与气泡排序(Bubble sort)这三个排序方式是初学排序所必须知道的三个基本排序方式,它们由于速度不快而不实用(平均与最快的时间复杂度都是O(n2)),然而它们排序的方式确是值得观察与探讨的。 * */ public class BasicSort {...2008-05-11 23:06:20 · 91 阅读 · 0 评论 -
快速排序(v 1.0)
快速排序法(quick sort)是目前所公认最快的排序方法之一,虽然快速排序法在最差状况下可以达O(n2),但是在多数的情况下,快速排序法的效率表现是相当不错的。 快速排序法的基本思想是在数组中找出适当的轴心,然后将数组一分为二,分别对左边与右边数组进行排序,而影响快速排序法效率的正是轴心的选择。 这边所介绍的第一个快速排序法版本,是在多数的教科书上所提及的版本,因为它最容易理解,也...2008-05-12 16:03:13 · 129 阅读 · 0 评论 -
快速排序(v 2.0)
取中间的元素s作比较,同样的先得往右找比s大的索引 i,然后往左找比s小的索引 j,只要两边的索引还没有交叉(也就i=j),就交换 i 与 j 的元素值。这里不用再进行轴的交换,因为在寻找交换的过程中,轴位置的元素也会参与交换的动作,轴已经成为一个抽象的概念,代表的是一个数值而已。 [code="java"] public static void QuickSort(int[] numbe...2008-05-13 12:34:05 · 139 阅读 · 0 评论 -
快速排序(v 3.0)
前面选的轴为左边和中间,当然,这次的轴为数组的最右边,先看看吧。 [code="java"] /* * 1, 以最右边的数s为比较的标准; * 2, 未处理完毕的数组分为四个部分,从左到右依次为小于s的部分,大于s的部分,未比较部分和最右的s; * 3, 小于s的部分最大下标是i;大于s的部分最大下标是j,刚开始时i为-1,j为0; * 4, 在排序的过程中,一发现不大于s...2008-05-13 17:09:30 · 377 阅读 · 0 评论