java:四种int【】数据排序,冒泡,插入,选择,快速排序

也许上篇文章有的地方不能正常运行,所以来补充完整版的

package arraySort;

public class SortArr {
 public static void main(String[] args) {
  int[] arrInt = { 100, 2, 2, 334, 23, 42, 34, 2 };
  maoPaoSort(arrInt);
  print("冒泡排序:", arrInt);
  arrInt = new int[] { 24, 324, 324, 2, 3 };
  insertSort(arrInt);
  print("插入排序:", arrInt);
  arrInt = new int[] { 2, 32, 4, 3, 24, 2, 3 };
  checkSort(arrInt);
  print("选择排序:", arrInt);
  arrInt = new int[] { 24, 32, 4, 3, 24, 2, 3 };
  quicklySort(arrInt);
  print("快速排序:", arrInt);
 }

 // 冒泡排序
 private static void maoPaoSort(int[] arrInt) {
  int temp = 0;
  for (int i = 0; i < arrInt.length; i++) {
   for (int j = 0; j < arrInt.length - 1; j++) {
    if (arrInt[i] < arrInt[j]) {
     temp = arrInt[i];
     arrInt[i] = arrInt[j];
     arrInt[j] = temp;
    }
   }
  }
 }

 // 插入排序
 private static void insertSort(int[] arrInt) {
  /*
   * //倒叙开始插入 for(int i=arrInt.length-2;i>=0;i--){ int j=0;
   * for(j=arrInt.length-1;j>i;j--){ if(arrInt[i]>arrInt[j]) { break; } }
   * int temp=arrInt[i]; for(int k=i;k<j;k++) { arrInt[k]=arrInt[k+1]; }
   * arrInt[j]=temp; }
   */
  // 正序开始插入
  for (int i = 0; i < arrInt.length; i++) {
   int j = 0;
   for (j = 0; j < i; j++) {
    if (arrInt[i] > arrInt[j]) {
     break;
    }
   }
   int temp = arrInt[i];
   for (int k = i; k > j; k--) {
    arrInt[k] = arrInt[k - 1];
   }
   arrInt[j] = temp;
  }

 }

 // 选择排序
 private static void checkSort(int[] arrInt) {
  for (int i = 0; i < arrInt.length - 1; i++) {
   int t = i;
   for (int j = i + 1; j < arrInt.length; j++) {
    if (arrInt[i] > arrInt[j]) {
     t = arrInt[i];
     arrInt[i] = arrInt[j];
     arrInt[j] = t;
    }
   }
  }

 }

 // 遍历
 public static void print(String str, int[] arrInt) {
  System.out.println(str);

  // for (int i = 0; i < arrInt.length; i++) {
  // System.out.println(arrInt[i]);
  // }

  for (int index : arrInt) {
   System.out.println(index);
  }
 }

 // 快速排序
 public static void quicklySort(int[] arrInt) {
  sort(arrInt, 0, arrInt.length - 1);
 }

 public static void sort(int[] array, int start, int end) {
  if (start >= end) {
   return;
  }
  int i = start;
  int j = end + 1;
  int s = array[start];
  while (true) {
   while (i < end && array[++i] < s)
    ;
   while (j > start && array[--j] > s)
    ;
   if (i >= j) {
    break;
   } else {
    int tmp = array[i];
    array[i] = array[j];
    array[j] = tmp;
   }
  }
  array[start] = array[j];
  array[j] = s;
  sort(array, start, j - 1);
  sort(array, j + 1, end);
 }

}

 

posted on 2010-05-17 12:34  快乐每一天Joe  阅读(237)  评论(0编辑  收藏  举报

导航