在体验了"选择排序"和"插入排序",本篇体验的是"冒泡排序",依次遍历数组中的元素,按照升序排列,如果前一个位置元素比后一个位置元素大,两者就交换位置。
自定义一个处理整型数组的类,包含添加、显示、清除及冒泡方法以及获取数组长度的属性。
monospace; width: 100%; margin: 0em; background-color: #f0f0f0"> class MyIntArray
{private int[] arr;private int upper; //最大索引private int index; //当前索引public MyIntArray(int size){arr = new int[size];upper = size - 1;index = 0;}public int Length{get { return upper + 1; }}public void Insert(int ele){arr[index] = ele;index++;}public void Display(){for (int i = 0; i <= upper; i++){Console.Write(arr[i] + " ");
}}public void Clear(){for (int i = 0; i <= upper; i++){arr[i] = 0;}index = 0;}//冒泡排序:从最后一个索引开始倒数
public void BubbleSort(){int temp;
//从最大的索引开始往前遍历,直到索引为1的位置
for (int i = upper; i >= 1; i--){//从最小的索引开始往后遍历,直到当前元素
for (int j = 0; j <= i - 1; j++){if (arr[j] > arr[j+1])
{temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}}}
以上,在冒泡方法中,从最后一个索引开始往前遍历,直到索引为1,然后遍历从索引为0的位置开始,到当前遍历元素的前一个位置,只要发现有左边元素大于右边元素,两者就交换位置。
客户端调用,在排序后再显示。
static void Main(string[] args){MyIntArray nums = new MyIntArray(10);
Random r = new Random(100);
for (int i = 0; i < nums.Length; i++){nums.Insert(r.Next(100));}nums.BubbleSort();nums.Display();}
“查找与排序”系列包括: