数据结构基本知识 http://student.zjzk.cn/course_ware/data_structure/web/main.htm 排序实现: // 选择排序算法 public class SelectionSorter { private int min; public void Sort(int[] list) { for (int i = 0; i < list.Length - 1; i++) { min = i; for (int j = i + 1; j < list.Length; j++) { if (list[j] < list[min]) min = j; } int t = list[min]; list[min] = list[i]; list[i] = t; } } } public class BubbleSorter { //冒泡排序算法 public void Sort(int[] list) { int i, j, temp; bool done = false; j = 1; while ((j < list.Length) && (!done)) { done = true; for (i = 0; i < list.Length - j; i++) { if (list[i] > list[i + 1]) { done = false; temp = list[i]; list[i] = list[i + 1]; list[i + 1] = temp; } } j++; } } } // 希尔排序 public class ShellSorter { public void Sort(int[] list) { int inc; for (inc = 1; inc <= list.Length / 9; inc = 3 * inc + 1) ; for (; inc > 0; inc /= 3) { for (int i = inc + 1; i <= list.Length; i += inc) { int t = list[i - 1]; int j = i; while ((j > inc) && (list[j - inc - 1] > t)) { list[j - 1] = list[j - inc - 1]; j -= inc; } list[j - 1] = t; } } } } // 插入排序 public class InsertionSorter { public void Sort(int[] list) { for (int i = 1; i < list.Length; i++) { int t = list[i]; int j = i; while ((j > 0) && (list[j - 1] > t)) { list[j] = list[j - 1]; --j; } list[j] = t; } } } public class MainClass { //测试 public static void Main() { int[] iArrary = new int[] { 1, 5, 13, 6, 10, 55, 99, 2, 87, 12, 34, 75, 33, 47 }; //BubbleSorter sh = new BubbleSorter(); //sh.Sort(iArrary); //ShellSorter sh = new ShellSorter(); //sh.Sort(iArrary); InsertionSorter sh = new InsertionSorter(); sh.Sort(iArrary); //SelectionSorter sh = new SelectionSorter(); //sh.Sort(iArrary); for (int m = 0; m < iArrary.Length; m++) Console.Write("{0} ", iArrary[m]); Console.WriteLine(); } } 后记: 冒泡是不断的把小的数向前移 选择是每次取最小的,然后向已经排好的部分最后添加 插入是把下一个数插入到已经排好的序列中的合适位置