在體驗了"選擇排序"和"插入排序",本篇體驗的是"氣泡排序",依次遍歷陣列中的元素,按照升序排列,如果前一個位置元素比後一個位置元素大,兩者就交換位置。
自定義一個處理整型陣列的類,包含新增、顯示、清除及冒泡方法以及獲取陣列長度的屬性。
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();}
“查詢與排序”系列包括: