一、界面设计

在排序前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(',');

三、冒泡排序法

冒泡排序法就是把数组中的元素按从小到大或从大到小顺序排例,注意每次比较的次数依次减小

公式格式为:

 for(int i = ; i < array.length - ; i++)
{
for(int j = ; j < array.length - - i; j++) //不能忘减i
{
int temp;
if(array[j] < array[j + ])
{
temp = array[j]; //这里决定了是降序,还是升序
array[j] = array[j + ] ;
array[j + ] =temp;
}
}
}

四、完整代码:

 using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Text.RegularExpressions; namespace 冒泡法排序
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void button2_Click(object sender, EventArgs e) //降序排列
{
string str = textBox1.Text.Trim();
//string str = textBox1.Text;
string[] ss = str.Split(); string temp = "";
for (int i = ; i < ss.Length - ; i++)
{
for (int j = ; j < ss.Length - - i; j++)
{
if (int.Parse(ss[j]) < int.Parse(ss[j + ]))
{
temp = ss[j];
ss[j] = ss[j + ];
ss[j + ] = temp;
}
}
}
for (int i = ; i < ss.Length; i++)
{
textBox2.AppendText(ss[i]);
textBox2.AppendText(",");
}
} private void button1_Click(object sender, EventArgs e) //升序排例
{
string str = textBox1.Text.Trim();
//string str = textBox1.Text;
string[] ss = str.Split(','); string temp = "";
for (int i = ; i < ss.Length - ; i++)
{
for (int j = ; j < ss.Length - - i; j++)
{
if (int.Parse(ss[j]) > int.Parse(ss[j + ]))
{
temp = ss[j];
ss[j] = ss[j + ];
ss[j + ] = temp;
}
}
}
for (int i = ; i < ss.Length; i++)
{
textBox2.AppendText(ss[i]);
textBox2.AppendText(",");
}
} private void Form1_Load(object sender, EventArgs e)
{
int[] array = { , , , , , , , , , , , , , , , , , }; for (int i = ; i < array.Length - ; i++)
{
for (int j = ; j < array.Length - -i; j++)
{
if (array[j] <= array[j + ])
{
int temp = array[j];
array[j] = array[j + ]; //把大的放在前面
array[j + ] = temp; //小的放在后面
}
}
} //for (int ik = 0; ik < array.Length; ik++)
//{
// textBox2.AppendText(array[ik].ToString());
// textBox2.AppendText(",");
//}
foreach(int i in array)
{
textBox2.AppendText(i.ToString());
textBox2.AppendText(",");
}
} private void button3_Click(object sender, EventArgs e)
{
textBox1.Text = "";
textBox2.Text = "";
}
}
}

c#实验一:基于winform的冒泡排序练习的更多相关文章

  1. 【基于WinForm+Access局域网共享数据库的项目总结】之篇一:WinForm开发总体概述与技术实现

    篇一:WinForm开发总体概述与技术实现 篇二:WinForm开发扇形图统计和Excel数据导出 篇三:Access远程连接数据库和窗体打包部署 [小记]:最近基于WinForm+Access数据库 ...

  2. 【基于WinForm+Access局域网共享数据库的项目总结】之篇二:WinForm开发扇形图统计和Excel数据导出

    篇一:WinForm开发总体概述与技术实现 篇二:WinForm开发扇形图统计和Excel数据导出 篇三:Access远程连接数据库和窗体打包部署 [小记]:最近基于WinForm+Access数据库 ...

  3. 【基于WinForm+Access局域网共享数据库的项目总结】之篇三:Access远程连接数据库和窗体打包部署

    篇一:WinForm开发总体概述与技术实现 篇二:WinForm开发扇形图统计和Excel数据导出 篇三:Access远程连接数据库和窗体打包部署 [小记]:最近基于WinForm+Access数据库 ...

  4. {VS2010C#}{WinForm}{ActiveX}VS2010C#开发基于WinForm的ActiveX控件

    在VS2010中使用C#开发基于WinForm的ActiveX控件 常见的一些ActiveX大部分是使用VB.Delphi.C++开发,使用C#开发ActiveX要解决下面三个问题: 使.NET组件可 ...

  5. 如何基于Winform开发框架或混合框架基础上进行项目的快速开发

    在开发项目的时候,我们为了提高速度和质量,往往不是白手起家,需要基于一定的基础上进行项目的快速开发,这样可以利用整个框架的生态基础模块,以及成熟统一的开发方式,可以极大提高我们开发的效率.本篇随笔就是 ...

  6. 基于Winform框架DataGridView控件的SqlServer数据库查询展示功能的实现

    关键词:Winform.DataGridView.SqlServer 一个基于winform框架的C/S软件,主要实现对SqlServer数据库数据表的实时查询. 一.为DataGridView添加数 ...

  7. 实验:基于http的yum源

    实验:基于http的yum源 selinux,firewalld已经关闭',系统为CentOS7 repodata所在的目录就是yum源 下面介绍了如何把本地光盘通过httpd服务器变成yum源:多个 ...

  8. ABP开发框架前后端开发系列---(14)基于Winform的ABP快速开发框架

    前面介绍了很多ABP系列的文章,一步一步的把我们日常开发中涉及到的Web API服务构建.登录日志和操作审计日志.字典管理模块.省份城市的信息维护.权限管理模块中的组织机构.用户.角色.权限.菜单等内 ...

  9. 在net Core3.1上基于winform实现依赖注入实例

    目录 在net Core3.1上基于winform实现依赖注入实例 1.背景 2.依赖注入 2.1依赖注入是什么? 2.1依赖注入的目的 2.2依赖注入带来的好处 2.2.1生命周期的控制 2.2.2 ...

随机推荐

  1. 【java设计模式】(3)---代理模式(案例解析)

    设计模式之代理模式 一.概述 1.什么是代理模式? 解释第一遍:代理模式主要由三个元素共同构成: 1)一个接口,接口中的方法是要真正去实现的. 2)被代理类,实现上述接口,这是真正去执行接口中方法的类 ...

  2. .net文件上传默认限制了大小4M

    如果需要上传比较大的文件(文件大小大于4M).则需要在webconfig里面<system.web>修改httpRuntime节点: <httpRuntime targetFrame ...

  3. Python爬虫入门教程 19-100 51CTO学院IT技术课程抓取

    写在前面 从今天开始的几篇文章,我将就国内目前比较主流的一些在线学习平台数据进行抓取,如果时间充足的情况下,会对他们进行一些简单的分析,好了,平台大概有51CTO学院,CSDN学院,网易云课堂,慕课网 ...

  4. APK安装成功后点击"打开",按Home键,在桌面点击图标后应用重启

    转载:http://blog.csdn.net/kepoon/article/details/7468688 问题: 安装系统SD卡里面的apk或者原有的程序更新版本的时候,会遇到升级安装成功之后的一 ...

  5. Lucene 09 - 什么是Lucene的高亮显示 + Java API实现高亮显示

    目录 1 什么是高亮显示 2 高亮显示实现 2.1 配置pom.xml文件, 加入高亮显示支持 2.2 代码实现 2.3 自定义html标签高亮显示 1 什么是高亮显示 高亮显示是全文检索的一个特点, ...

  6. SQL数据库连接语句

    一般的远程访问的写成这样: Data Source=IP ;Initial Catalog=数据库名 ;UserID= 用户名 ;Password=密码 本地访问的写成这样: Data Source= ...

  7. linux磁盘管理系列二:软RAID的实现

    磁盘管理系列 linux磁盘管理系列一:磁盘配额管理   http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_linux_040_quota.html l ...

  8. RDIFramework.NET平台代码生成器V3.2版本全新发布(提供下载-免费使用)

    回顾V3.1版本更新内容如下: 1.增加对Oracle表创建语句的查看. 2.新增对MySql的代码生成支持. 3.全面重构对多线程的支持,改变以前会无故退出的现象. 本次在V3.1版本的基础上,增加 ...

  9. mysqladmin实用工具

    mysqladmin命令行实用工具是命令行工具套件中的重量级工具.这个工具可以执行很多选项和工具(被称为命令). 因为这个实用工具是从命令行启动运行的,它使得管理员可以编写一系列操作脚本,这比直接运行 ...

  10. Spring事务的传播行为

      本文主要介绍下Spring事务中的传播行为. 事务传播行为介绍 Spring中的7个事务传播行为: |事务行为|说明 | |:--|:--| |PROPAGATION_REQUIRED | 支持当 ...