java:三种经典大排序汇总,冒泡,插入,选择

来源:互联网 发布:excel2013数据有效性 编辑:程序博客网 时间:2024/05/21 22:23

package arrays.myArray;

public class SortArr {
 public static void main(String[] args) {
  int[] arrInt = { 4, 7, 8, 5, 6, 3, 2, 3, 4 };
  maoPaoSort(arrInt);
  print("冒泡排序:", arrInt);
  arrInt = new int[]{ 4, 7, 8, 5, 6, 3, 2, 3, 4 };
  insertSort(arrInt);
  print("插入排序:", arrInt);
  arrInt = new int[]{ 4, 7, 8, 5, 6, 3, 2, 3, 4 };
  checkSort(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 = 1; i < arrInt.length; i++) {
   int j = 0;
   for (j = 0; j < arrInt.length - 1; j++) {
    if (arrInt[i] > arrInt[j]) {
     break;
    }
   }
   int temp = arrInt[j];
   for (int k = arrInt.length - 1; k > 0; k--) {
    arrInt[k - 1] = arrInt[k];
   }
   arrInt[i] = temp;
  }*/
 }

 // 选择排序
 private static void checkSort(int[] arrInt) {
  int min = 0;
  int temp = 0;
  // 1、记录最小值
  /*
   * for (int i = 0; i < arrInt.length; i++) { int min = arrInt[i]; for
   * (int j = i + 1; j < arrInt.length; j++) { if (minValue > arrInt[j]) {
   * temp = min; min = arrInt[j]; arrInt[j] = temp; } } arrInt[i] = min; }
   */
  // 2、记录最小下标
  for (int i = 0; i < arrInt.length; i++) {
   min = i;
   for (int j = i + 1; j < arrInt.length; j++) {
    if (arrInt[min] > arrInt[j]) {
     temp = arrInt[min];
     arrInt[min] = arrInt[j];
     arrInt[j] = temp;
    }
   }
   i = min;
  }
 }

 // 遍历
 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 i : arrInt) {
   System.out.print(i + ",");
  }
  System.out.println();
 }

}

原创粉丝点击