1、冒泡排序算法
?
public class MaoPao { public static void main(String[] args) { int[] a = { 10, 3, 55, 22, 25, 44, 9, 58, 33, 12 }; paiXu(a); System.out.println("最终比较结果:"); print(a); } private static void print(int[] a) { for (int i = 0; i < a.length; i++) { System.out.print(a[i] + "\t"); if(i==a.length-1){ System.out.println(); } } } /** * 冒泡排序 * n个数进行排序,需进行n-1轮比较 * 每一轮比较中需进行(n-当前轮数)次两两比较,每比较完一轮排好一个数 * @param a */ public static void paiXu(int[] a) { for (int i = 1; i < a.length; i++) { for (int j = 0; j < a.length - i; j++) { if (a[j] > a[j + 1]) { int t = a[j]; a[j] = a[j + 1]; a[j + 1] = t; } } System.out.println("第" + i + "轮比较结果:"); print(a); } } }
?测试结果如下:
?
2、选择排序算法
?
public class XuanZe { public static void main(String[] args) { int a[] = { 3, 2, 8, 6, 4 }; xuanZe(a); System.out.println("最终比较结果:"); print(a); } private static void print(int[] a) { for (int i = 0; i < a.length; i++) { System.out.print(a[i] + "\t"); if(i==a.length-1){ System.out.println(); } } } // 选择排序法 public static void xuanZe(int[] a) { for (int i = 0; i < a.length - 1; i++) { int minIndex = i;// 假设最小数的索引 // 找最小数的索引 for (int j = i + 1; j < a.length; j++) { if (a[j] < a[minIndex]) { minIndex = j; } } // 如果假设的最小数索引与找到的最小数索引不相同,那就交换位置 if (minIndex != i) { int t = a[i]; a[i] = a[minIndex]; a[minIndex] = t; } System.out.println("第" + (i+1) + "轮比较结果:"); print(a); } } }
?测试结果如下:
?
3、插入排序算法
?
public class ChaRu { public static void main(String[] args) { int a[] = { 4, 2, 5, 8, 6 }; chaRu(a); System.out.println("最终比较结果:"); print(a); } private static void print(int[] a) { for (int i = 0; i < a.length; i++) { System.out.print(a[i] + "\t"); if(i==a.length-1){ System.out.println(); } } } // 插入排序法 // 算法思想:假设前面的数已经排好,用后面的数跟前面的数进行比较 public static void chaRu(int[] a) { //首轮比较,假设第一个数已经排好 for (int i = 1; i < a.length; i++) { // 直到数组下标为0结束比较 for (int j = i; (j > 0) && (a[j] < a[j - 1]); j--) { int t = a[j]; a[j] = a[j - 1]; a[j - 1] = t; } System.out.println("第" + i + "轮比较结果:"); print(a); } } }
?测试结果如下:
?
?
?
原文:http://xieke90.iteye.com/blog/2235769