Java排序算法代码

欢迎进入Java社区论坛,与200万技术人员互动交流 >>进入

  package temp;

  import sun.misc.Sort;

  /**

  * @author zengjl

  * @version 1.0

  * @since 2007-08-22

  * @Des java几种基本排序方法

  */

  /**

  * SortUtil:排序方法

  * 关于对排序方法的选择:这告诉我们,什么时候用什么排序最好。当人们渴望先知道排在前面的是谁时,

  * 我们用选择排序;当我们不断拿到新的数并想保持已有的数始终有序时,我们用插入排序;当给出的数

  * 列已经比较有序,只需要小幅度的调整一下时,我们用冒泡排序。

  */

  public class SortUtil extends Sort {

  /**

  * 插入排序法

  * @param data

  * @Des 插入排序(Insertion Sort)是,每次从数列中取一个还没有取出过的数,并按照大小关系插入到已经取出的数中使得已经取出的数仍然有序。

  */

  public int[] insertSort(int[] data) {

  int temp;

  for (int i = 1; i < data.length; i++) {

  for (int j = i; (j > 0) && (data[j] < data[j – 1]); j–) {

  swap(data, j, j – 1);

  }

  }

  return data;

  }

  /**

  * 冒泡排序法

  * @param data

  * @return

  * @Des 冒泡排序(Bubble Sort)分为若干趟进行,每一趟排序从前往后比较每两个相邻的元素的大小(因此一趟排序要比较n-1对位置相邻的数)并在

  * 每次发现前面的那个数比紧接它后的数大时交换位置;进行足够多趟直到某一趟跑完后发现这一趟没有进行任何交换操作(最坏情况下要跑n-1趟,

  * 这种情况在最小的数位于给定数列的最后面时发生)。事实上,在第一趟冒泡结束后,最后面那个数肯定是最大的了,于是第二次只需要对前面n-1

  * 个数排序,这又将把这n-1个数中最小的数放到整个数列的倒数第二个位置。这样下去,冒泡排序第i趟结束后后面i个数都已经到位了,第i+1趟实

  * 际上只考虑前n-i个数(需要的比较次数比前面所说的n-1要小)。这相当于用数学归纳法证明了冒泡排序的正确性

  */

  public int[] bubbleSort(int[] data) {

  int temp;

  for (int i = 0; i < data.length; i++) {

  for (int j = data.length – 1; j > i; j–) {

  if (data[j] < data[j – 1]) {

  swap(data, j, j – 1);

  }

  }

  }

  return data;

  }

  /**

  * 选择排序法

  * @param data

  * @return

  * @Des 选择排序(SelectionSort)是说,每次从数列中找出一个最小的数放到最前面来,再从剩下的n-1个数中选择一个最小的,不断做下去。

  */

  public int[] chooseSort(int[] data) {

  int temp;

  for (int i = 0; i < data.length; i++) {

  int lowIndex = i;

  for (int j = data.length – 1; j > i; j–) {

  if (data[j] < data[lowIndex]) {

  lowIndex = j;

  }

  }

  swap(data, i, lowIndex);

  }

  return data;

  }

[1][2][3]

失败是成功之母

Java排序算法代码

相关文章:

你感兴趣的文章:

标签云: