c#实验一:基于winform的冒泡排序练习
一、界面设计
在排序前textbox中输入数字,以逗号隔开,通过两个button实现降序排序或升序排序,然后在排序后textbox中显示
三个关键点:
1、监测输入是否合法,最好使用正则表达式
2、拆分textbox中字符串,使用String类的slipt方法
3、冒泡排序法
二、关于拆分textbox中字符串
1、如果以空格作为字符串结束标志,应采用以下语句
string str = textBox1.Text.Trim();
string[] ss = str.Split();
2、如果以逗号作为结束标志,应采用以下语句
string str = textBox1.Text.Trim(); 或者 string str = textBox1.Text;
string[] ss = str.Split(',');
三、冒泡排序法
冒泡排序法就是把数组中的元素按从小到大或从大到小顺序排例,注意每次比较的次数依次减小
公式格式为:
1 for(int i = 0; i < array.length - 1; i++) 2 { 3 for(int j = 0; j < array.length - 1 - i; j++) //不能忘减i 4 { 5 int temp; 6 if(array[j] < array[j + 1]) 7 { 8 temp = array[j]; //这里决定了是降序,还是升序 9 array[j] = array[j + 1] ; 10 array[j + 1] =temp; 11 } 12 } 13 }
四、完整代码:
1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using System.Text; 8 using System.Threading.Tasks; 9 using System.Windows.Forms; 10 using System.Text.RegularExpressions; 11 12 namespace 冒泡法排序 13 { 14 public partial class Form1 : Form 15 { 16 public Form1() 17 { 18 InitializeComponent(); 19 } 20 21 private void button2_Click(object sender, EventArgs e) //降序排列 22 { 23 string str = textBox1.Text.Trim(); 24 //string str = textBox1.Text; 25 string[] ss = str.Split(); 26 27 string temp = ""; 28 for (int i = 0; i < ss.Length - 1; i++) 29 { 30 for (int j = 0; j < ss.Length - 1 - i; j++) 31 { 32 if (int.Parse(ss[j]) < int.Parse(ss[j + 1])) 33 { 34 temp = ss[j]; 35 ss[j] = ss[j + 1]; 36 ss[j + 1] = temp; 37 } 38 } 39 } 40 for (int i = 0; i < ss.Length; i++) 41 { 42 textBox2.AppendText(ss[i]); 43 textBox2.AppendText(","); 44 } 45 } 46 47 private void button1_Click(object sender, EventArgs e) //升序排例 48 { 49 string str = textBox1.Text.Trim(); 50 //string str = textBox1.Text; 51 string[] ss = str.Split(','); 52 53 string temp = ""; 54 for (int i = 0; i < ss.Length - 1; i++) 55 { 56 for (int j = 0; j < ss.Length - 1 - i; j++) 57 { 58 if (int.Parse(ss[j]) > int.Parse(ss[j + 1])) 59 { 60 temp = ss[j]; 61 ss[j] = ss[j + 1]; 62 ss[j + 1] = temp; 63 } 64 } 65 } 66 for (int i = 0; i < ss.Length; i++) 67 { 68 textBox2.AppendText(ss[i]); 69 textBox2.AppendText(","); 70 } 71 } 72 73 private void Form1_Load(object sender, EventArgs e) 74 { 75 int[] array = { 23, 24, 25, 21, 19, 16, 12, 32, 100, 98, 45, 67, 39, 48, 67, 54, 53, 27 }; 76 77 for (int i = 0; i < array.Length - 1; i++) 78 { 79 for (int j = 0; j < array.Length - 1-i; j++) 80 { 81 if (array[j] <= array[j + 1]) 82 { 83 int temp = array[j]; 84 array[j] = array[j + 1]; //把大的放在前面 85 array[j + 1] = temp; //小的放在后面 86 } 87 } 88 } 89 90 //for (int ik = 0; ik < array.Length; ik++) 91 //{ 92 // textBox2.AppendText(array[ik].ToString()); 93 // textBox2.AppendText(","); 94 //} 95 foreach(int i in array) 96 { 97 textBox2.AppendText(i.ToString()); 98 textBox2.AppendText(","); 99 } 100 } 101 102 private void button3_Click(object sender, EventArgs e) 103 { 104 textBox1.Text = ""; 105 textBox2.Text = ""; 106 } 107 } 108 }