思路:重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。
这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端,故名。
界面为:
主要代码:
//重复地走访过要排序的数列,一次比较两个元素, //如果他们的顺序错误就把他们交换过来。 //走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。 private void btnSort_Click(object sender, EventArgs e) { try { string beforeSort = txtBeforeSort.Text.ToString(); string[] sortArr = beforeSort.Split('*'); List<int> beforeArr = new List<int>(); foreach (string str in sortArr) { int num = int.Parse(str); beforeArr.Add(num); } int count = beforeArr.Count; bool flag = true; while (flag) { int changeTimes = 0; for (int i = 0; i < count - 1; i++) { if (beforeArr[i] > beforeArr[i + 1]) { int num = beforeArr[i]; beforeArr[i] = beforeArr[i + 1]; beforeArr[i + 1] = num; changeTimes++; } } if (changeTimes == 0) { flag = false; } } string afterStr = ""; foreach (int i in beforeArr) { afterStr += i.ToString() + "*"; } txtAfterSort.Text = afterStr.Substring(0, afterStr.Length - 1); } catch (Exception ex) { }