主要排序算法Java实现

发表于:2010-5-14 10:28

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:51Testing软件测试网采编

#
java
#
Java

  1,冒泡法:

public class BubbleSortImpl1 {
  public static void BubbleSort(int A[]) {
  int n = A.length;
    for(int i=0;i<n;i++){
      for(int j=0;j<n-i-1;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<n-1&&H[j]<H[j+1])
    ++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<A.length;i++)
    System.out.print(A[i]);
  }
}

31/3123>
《2023软件测试行业现状调查报告》独家发布~

精彩评论

  • kettleyang
    2010-5-14 11:18:17

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

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号