package com.j2se; public class TestSort { public static void main(String args[]) { int[] a = { 1, 7, 3, 9, 2, 5, 8, 4, 6 }; // bubbleSort(a); // (Bubble Sort) // selectionSort(a); // insertSort(a); // for (int i = 0; i < a.length; i++) { System.out.print(a[i] + " "); } } /**************************************************************** * * : , , 。 1 2 , , 。 2 3 , , . , , , 。 , ( 2 3 , 1 2 ). , , , , , , 。 , 。 , , , 。 , i, j。 9 , 9,8,...,1 。 j , a[j] a[j+1] ,i 1,2,...,9, i, j 1,2,...10-i。 public class BubbleSort { public static void sort(int[] data) { int temp; for (int i = 0; i < data.length; i++) { for (int j = data.length - 1; j > i; j--) { if (data[i] > data[j]) { temp = data[i]; data[i] = data[j]; data[j] = temp; } } } } public static void main(String[] args) { int[] a = { 4, 2, 3, 1, 5 }; sort(a); for (int i = 0; i < a.length; i++) System.out.print(a[i] + " "); } } ================================================================================= public class Test { public static void main(String[] args) { int[] a = { 10, 32, 1, 9, 5, 7, 12, 0, 4, 3 }; System.out.print(" : "); for (int i = 0; i < a.length; i++) System.out.printf("%3s", a[i]); System.out.println(); Test test = new Test(); test.bubbleSort(a); System.out.print(" : "); for (int i = 0; i < a.length; i++) System.out.printf("%3s", a[i]); System.out.println(); } public void bubbleSort(int[] a) { int len = a.length; System.out.println(" :" + len); boolean change = false; int temp; int count = 0; for (int i = len; i > 1; i--) { for (int j = 0; j < i - 1; j++) { if (a[j + 1] < a[j]) { temp = a[j + 1]; a[j + 1] = a[j]; a[j] = temp; change = true; count++; } } if (change) { System.out.print(" " + count + " : "); for (int k = 0; k < len; k++) System.out.print(a[k] + " "); System.out.println(); } } } } * * @param a * @return */ public static int[] bubbleSort(int[] a) { int len = a.length; for (int i = len - 1; i >= 1; i--) { for (int j = 0; j <= i - 1; j++) { if (a[j] > a[j + 1]) { int temp = a[j]; a[j] = a[j + 1]; a[j + 1] = temp; } } } return a; } /**************************************************** * * : n-1 . 1 L[1..n] L[1] , 2 L[2..n] L[2] ,......, i L[i..n] L[i] 。 , i , i 。 , , , , 。 * * @param a * @return */ public static int[] selectionSort(int[] a) { for (int i = 0; i < a.length; i++) { for (int j = i + 1; j < a.length; j++) { if (a[i] > a[j]) { int temp = a[i]; a[i] = a[j]; a[j] = temp; } } } return a; } public static int[] insertSort(int[] a) { for (int i = 1; i < a.length; i++) { for (int j = i; j > 0; j--) { if (a[j] < a[j - 1]) { int temp = a[j]; a[j] = a[j - 1]; a[j - 1] = temp; } else { break; } } } return a; } }
より多くのアルゴリズムリファレンス:http://blog.csdn.net/feixiaoxing/article/details/6993718