本帖最后由 天涯追梦 于 2014-4-24 12:40 编辑
总结了5中常见算法,冒泡排序、选择排序、插入排序、快速排序和归并排序,前三种比较简单,只做简单介绍和代码举例,后两种代码有些复杂,做详细介绍。 *冒泡排序:定义两个for循环,比较相邻元素,前者比后者大就交换相邻元素 *选择排序:定义初始最小项,比较找出最小项,然后进行交换 *插入排序:将一个记录插入到已经排序好的有序表中,从而得到一个新的,记录数增一的有序表。 * 定义两个for循环,以第一个记录为已经排好的有序表,然后逐渐排序后面的记录。 public class Test33 {
public static void main(String[] args) { int[] a = { 3, 5, 1, 56, 3, 15, 7, 0, 1 }; System.out.print("原有数组:"); print(a); xuanZe(a); System.out.print("选择排序:"); print(a); maoPao(a); System.out.print("冒泡排序:"); print(a); chaRu(a); System.out.print("插入排序:"); print(a);
} //插入排序 private static void chaRu(int[] a) { for (int i = 1; i < a.length; i++) { for (int j = i; j > 0; j--) { if (a[j] < a[j - 1]) { jiaohuan(a, j, j - 1); } } } } //打印数组 private static void print(int[] a) { for (int i : a) { System.out.print(i + " "); } System.out.println(); } //冒泡排序 private static void maoPao(int[] a) { for (int i = 0; i < a.length; i++) { for (int j = i + 1; j < a.length; j++) { if (a > a[j]) { jiaohuan(a, i, j); } } } } //交换数组元素 private static void jiaohuan(int[] a, int i, int j) { int temp; temp = a; a = a[j]; a[j] = temp; } //选择排序 private static void xuanZe(int[] a) { for (int i = 0; i < a.length - 1; i++) { int min = i; for (int j = i + 1; j < a.length; j++) { if (a[min] > a[j]) { min = j; } } if (min != i) { jiaohuan(a, min, i); }
}
} }
快速排序的基本思想: |