public BubbleSortTest() { Console.WriteLine("--------------BubbleSort-------------"); nums = CArray.InitArray(); Console.Write("before: "); nums.DisplayElements(); BubbleSort(); Console.WriteLine("-------------------------------------"); }
private void InsertionSort() { int inner, temp; for (int outer = 1; outer <= nums.Upper; outer++) { temp = nums.Arr[outer]; inner = outer; while (inner > 0 && nums.Arr[inner - 1] >= temp) { nums.Arr[inner] = nums.Arr[inner - 1]; inner -= 1; } nums.Arr[inner] = temp; nums.DisplayElements(); } }
/// <summary> /// 较小的值浮动到左侧 较大的值浮动到右侧 /// 多次遍历数组 比较相邻的值 如果左侧的数值大于右侧数值就进行交换 /// </summary> public void BubbleSort() { int temp; for (int outer = nums.Upper; outer >= 1; outer--) { for (int inner = 0; inner <= outer - 1; inner++) { if ((int)nums.Arr[inner] > nums.Arr[inner + 1]) { temp = nums.Arr[inner]; nums.Arr[inner] = nums.Arr[inner + 1]; nums.Arr[inner + 1] = temp; } } nums.DisplayElements(); } }
/// <summary> /// 从起始开始将第一个元素与数组中的其他元素进行比较 将最小的元素放在第0个位置、 /// 再从第一个位置开始再次进行排序操作 /// </summary> private void SelectionSort() { int min, temp; for (int outer = 0; outer <= nums.Upper; outer++) { min = outer; for (int inner = outer + 1; inner <= nums.Upper; inner++) { if (nums.Arr[inner] < nums.Arr[min]) { min = inner; } } temp = nums.Arr[outer]; nums.Arr[outer] = nums.Arr[min]; nums.Arr[min] = temp; nums.DisplayElements(); } }