九鼎烹吧 关注:11贴子:645
  • 6回复贴,共1

JAVA中运用数组的四种排序方法

只看楼主收藏回复

利用Arrays
import java.util.Arrays;
public class Test2{
public static void main(String[] args){
int[] a={5,4,2,4,9,1};
Arrays.sort(a); //进行排序
for(int i: a){
System.out.print(i);
}
}
}


IP属地:北京1楼2014-11-16 15:51回复
    冒泡
    public static int[] bubbleSort(int[] args){//冒泡排序算法
    for(int i=0;i<args.length-1;i++){
    for(int j=i+1;j<args.length;j++){
    if (args[i]>args[j]){
    int temp=args[i];
    args[i]=args[j];
    args[j]=temp;
    }
    }
    }
    return args;
    }


    IP属地:北京2楼2014-11-16 15:51
    收起回复
      选择
      public static int[] selectSort(int[] args){//选择排序算法
      for (int i=0;i<args.length-1 ;i++ ){
      int min=i;
      for (int j=i+1;j<args.length ;j++ ){
      if (args[min]>args[j]){
      min=j;
      }
      }
      if (min!=i){
      int temp=args[i];
      args[i]=args[min];
      args[min]=temp;
      }
      }
      return args;
      }


      IP属地:北京3楼2014-11-16 15:52
      回复
        插入
        public static int[] insertSort(int[] args){//插入排序算法
        for(int i=1;i<args.length;i++){
        for(int j=i;j>0;j--){
        if (args[j]<args[j-1]){
        int temp=args[j-1];
        args[j-1]=args[j];
        args[j]=temp;
        }else break;
        }
        }
        return args;
        }


        IP属地:北京4楼2014-11-16 15:52
        回复
          快速排序
          public class TestMain {
          public static void main(String[] args) {
          Integer[] list={34,3,53,2,23,7,14,10};
          QuicSort qs=new QuicSort();
          qs.quick(list);
          for(int i=0;i<list.length;i++){
          System.out.print(list[i]+" ");
          }
          System.out.println();
          }
          }
          class QuicSort{
          public int getMiddle(Integer[] list, int low, int high) {
          int tmp = list[low]; //数组的第一个作为中轴
          while (low < high) {
          while (low < high && list[high] > tmp) {
          high--;
          }
          list[low] = list[high]; //比中轴小的记录移到低端
          while (low < high && list[low] < tmp) {
          low++;
          }
          list[high] = list[low]; //比中轴大的记录移到高端
          }
          list[low] = tmp; //中轴记录到尾
          return low; //返回中轴的位置
          }
          public void _quickSort(Integer[] list, int low, int high) {
          if (low < high) {
          int middle = getMiddle(list, low, high); //将list数组进行一分为二
          _quickSort(list, low, middle - 1); //对低字表进行递归排序
          _quickSort(list, middle + 1, high); //对高字表进行递归排序
          }
          }
          public void quick(Integer[] str) {
          if (str.length > 0) { //查看数组是否为空
          _quickSort(str, 0, str.length - 1);
          }
          }
          }


          IP属地:北京5楼2014-11-18 20:23
          回复