一、界面设计

在排序前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. 多机部署redis5.0集群环境

    redis5.0集群部署 一.集群介绍 Redis 集群是一个可以在多个 Redis 节点之间进行数据共享的设施(installation). Redis 集群不支持那些需要同时处理多个键的 Redi ...

  2. Vuex的模块化、优点

    前言:如果说我们的vuex的仓库代码量巨大,我们要不要采用就像后端与一样的分层,要不然一吨的代码放在main里,呵呵.所以我们要采用模块化! 看这篇文章的时候,一定要看看上一篇的vuex入门精讲:Vu ...

  3. 使用Glue4Net部署.NET应用

    Glue4Net是一款.NET平台下的应用部署管理容器,可以配置N个不同目录下的.NET应用并加载到不同的应用域中,并提供自动识别应用文件的变更来重新加载应用.通过Glue4Net应用加载容器可以大大 ...

  4. JAVA实现接口监控报警系统

    公司一内部系统需要添加一个接口和定时任务监控机制,针对了系统出现的定时任务没有执行,定时任务执行异常出错,对外传送的数据接口异常出错,对内的系统数据互传异常出错等问题进行设计,目的是为了能够让用户没发 ...

  5. 【转载】asp.net core 2.0的认证和授权

    在asp.net core中,微软提供了基于认证(Authentication)和授权(Authorization)的方式,来实现权限管理的,本篇博文,介绍基于固定角色的权限管理和自定义角色权限管理, ...

  6. 一个emoji引发的一条血案:mysql存储emoji表情字符时报错解决

    以下是我插入一条带表情的数据到mysql后出现错误 2019-03-04 14:24:40,462 ERROR 2807 [-/139.199.27.244/-/2ms POST /api/activ ...

  7. Centos7-yum部署配置LAMP-之LAMP及php-fpm实现反代动态资源

    一.简介 LAMP:linux+apache+mysql(这里用mariadb)+php(perl,python) LAMMP:memcached缓存的 CGI:Common Gateway Inte ...

  8. MySQL 笔记整理(4) --深入浅出索引(上)

    笔记记录自林晓斌(丁奇)老师的<MySQL实战45讲> 4) --深入浅出索引(上) 一句话简单来说,索引的出现其实就是为了提高数据查询的效率,就像书的目录一样. 索引的常见模型 哈希表: ...

  9. mysql 错误 ERROR 1030 Got error 28 from

    错误SQL 查询:编辑SHOWFULLFIELDSFROM`表`FROM`数据库`; MySQL 返回:#1030 - Got error 28 from storage engine 根据返回值,可 ...

  10. Web前端:博客美化:三、右上角的Github Ribbon

    1.保存图片到博客园相册 2.复制代码到可以放html代码的地方 我因为数量问题把这段sei到了 页首Html代码 <a href="https://github.com/zhengw ...