您的当前位置:首页正文

Java排序算法

2024-09-27 来源:伴沃教育

  1,冒泡法

  public class BubbleSortImpl1 {

  public static void BubbleSort(int A[]) {

  int n = A.length;

  for(int i=0;i

  for(int j=0;j

  if(A[j]>A[j+1])

  {

  int temp=A[j];

  A[j]=A[j+1];

  A[j+1]=temp;//直接调用Swap会出错。why?

  }

  }

  }

  }

  public static void swap(int a, int b) {

  int temp = a;

  a = b;

  b = temp;

  }

  /**

  * @param args

  */

  public static void main(String[] args) {

  // TODO Auto-generated method stub

  int A[] = new int[] { 2, 5, 3, 9, 7, 1, 30 };

  BubbleSort(A);

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

  System.out.println(A[i]);

  }

  }

  }

  2,堆排序

  public class HeapSort {

  static void HeapAdjust(int H[],int s,int n){//使H[s...m]称为一个大顶堆

  int rc=H[s];

  int j;

  for(j=2*s;j<=n;j=j*2){

  if(j

  ++j;//j为父节点的最大孩子

  if(rc>=H[j])

  break;//rc应该掺入在j的父位置上

  H[s]=H[j];//j上移

  s=j;

  }

  H[s]=rc;

  }

  static void Heap_Sort(int H[]){

  int n=H.length;

  for(int i=n/2;i>0;i--){

  HeapAdjust(H,i,n);

  }//

  for(int k=n-1;k>1;k--){

  int temp=H[1];

  H[1]=H[k];

  H[k]=temp;//将堆顶记录和 当前未经排序子序列中最后一个记录交换。

  HeapAdjust(H,1,k-1);

  }

  }

  /**

  * @param args

  */

  public static void main(String[] args) {

  // TODO Auto-generated method stub

  int A[]={0,3,5,9,2,7};

  Heap_Sort(A);

  for(int i=0;i

  System.out.print(A[i]);

  }

  }

  3,插入排序

  public class InsertSortImpl {

  /**

  * @param args

  */

  public static void InsertSort(int A[]) {

  int n = A.length;

  for (int i = 0; i < n-1; i++) {

  int temp = A[i+1];

  Insert(A, temp, i );

  }

  }

  public static void Insert(int A[], int e, int k) {// 对A[1...k]排序

  while(k>=0&&A[k]>e){

  A[k+1]=A[k];

  k--;

  }

  A[k+1]=e;

  }

  public static void main(String[] args) {

  // TODO Auto-generated method stub

  int A[] = new int[] { 2, 5, 3, 9, 7, 1, 30,6 };

  InsertSort(A);

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

  System.out.println(A[i]);

  }

  }

  }

1.

2.

3.

4.

5.

6.

7.

8.

9.

显示全文