class CArray { private int[] arr; private int upper; private int numElements; public CArray(int size) { arr = new int[size]; upper = size - 1; numElements = 0; } public void Insert(int item) { arr[numElements] = item; numElements++; } public void Clear() { for (int i = 0; i <= upper; i++) { arr[i] = 0; } numElements = 0; } public void DisplayElements() { for (int i = 0; i <= upper; i++) { Console.Write(arr[i] + " "); } Console.WriteLine(); } //冒泡排序 public void BubbleSort() { int temp; for (int outer = upper; outer >= 1; outer--) { for (int inner = 0; inner <= outer-1; inner++) { if (arr[inner] > arr[inner + 1]) { temp = arr[inner]; arr[inner] = arr[inner + 1]; arr[inner + 1] = temp; } } this.DisplayElements(); } } //选择排序 public void SelectionSort() { int min, temp; for (int outer = 0; outer <= upper; outer++) { min = outer; for (int inner = outer+1; inner <= upper; inner++) { if (arr[inner] < arr[min]) min = inner; } if (min != outer) { temp = arr[outer]; arr[outer] = arr[min]; arr[min] = temp; } this.DisplayElements(); } } //插入排序 public void InsertionSort() { int inner, temp; for (int outer = 1; outer <= upper; outer++) { temp = arr[outer]; inner = outer; while (inner>0 && arr[inner-1]>=temp) { arr[inner] = arr[inner - 1]; inner--; } arr[inner] = temp; this.DisplayElements(); } } } //二叉查找--迭代算法 public int binSearch(int value) { int upperBound, lowerBound, mid; upperBound = arr.Length - 1; lowerBound = 0; while (lowerBound<=upperBound) { mid = (lowerBound + upperBound) / 2; if (arr[mid] == value) return mid; else if (value < arr[mid]) upperBound = mid - 1; else lowerBound = mid + 1; } return -1; } //二叉查找的递归算法--速度慢 public int RbinSearch(int value, int lower, int upper) { if (lower > upper) return -1; else { int mid; mid = (lower + upper) / 2; if (value < arr[mid]) return RbinSearch(value, lower, mid - 1); else if (value == arr[mid]) return mid; else return RbinSearch(value, mid + 1, upper); } } 选择排序是三种算法中效率最高的。基准是冒泡排序、插入排序