疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

Java中几种排序算法


 

  1)冒泡排序

  import org.rut.util.algorithm.SortUtil;

  public class BubbleSort implements SortUtil.Sort{

  public void sort(int[] data) {

  int temp;

  for(int i=0;i

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

  if(data[j]

  SortUtil.swap(data,j,j-1);

  }

  }

  }

  }

  }

  2)插入排序

  import org.rut.util.algorithm.SortUtil;

  public class InsertSort implements SortUtil.Sort{

  public void sort(int[] data) {

  int temp;

  for(int i=1;i

  for(int j=i;(j>0)&&(data[j]

  SortUtil.swap(data,j,j-1);

  }

  }

  }

  }

  3)选择排序

  import org.rut.util.algorithm.SortUtil;

  public class SelectionSort implements SortUtil.Sort {

  public void sort(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;

  }

  }

  SortUtil.swap(data,i,lowIndex);

  }

  }

  }

  4)快速排序

  import org.rut.util.algorithm.SortUtil;

  public class QuickSort implements SortUtil.Sort{

  public void sort(int[] data) {

  quickSort(data,0,data.length-1);

  }

  private void quickSort(int[] data,int i,int j){

  int pivotIndex=(i+j)/2;

  //swap

  SortUtil.swap(data,pivotIndex,j);

  int k=partition(data,i-1,j,data[j]);

  SortUtil.swap(data,k,j);

  if((k-i)>1) quickSort(data,i,k-1);

  if((j-k)>1) quickSort(data,k+1,j);

  }

  private int partition(int[] data, int l, int r,int pivot) {

  do{

  while(data[++l]

  while((r!=0)&&data[--r]>pivot);

  SortUtil.swap(data,l,r);

  }

  while(l

  SortUtil.swap(data,l,r);

  return l;

  }

  }

  归并排序/堆排序。。。。。。