一、界面设计

在排序前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. 关于AJAX异步请求

    一个HTTP请求由4个部分组成: *HTTP请求方法或“动作” *正在请求的URL *一个可选的请求头集合,其中可能包括身份验证信息 *一个可选的请求主体 服务器返回的HTTP响应包含3部分: *一个 ...

  2. Vue2.0中的transition组件

    组件的过度 Vue1.0中transition做为标签的行内属性被vue支持.但在Vue2.0中.Vue放弃了旧属性的支持并提供了transition组件,transition做为标签被使用. 使用t ...

  3. sql server 数据库创建链接服务器

    本文介绍在sql server中创建链接服务器访问sql server数据库. 方法: 打开SSMS,新建程序,执行下面sql语句块: EXEC sp_addlinkedserver @server= ...

  4. 在centos7中python3的安装注意

    ---恢复内容开始--- 云主机的python是2.7有些不方便,故要更换3,看到官网有3.6的包,就下载了. wget https://www.python.org/ftp/python/3.6.3 ...

  5. GBDT 算法:原理篇

    本文由云+社区发表 GBDT 是常用的机器学习算法之一,因其出色的特征自动组合能力和高效的运算大受欢迎. 这里简单介绍一下 GBDT 算法的原理,后续再写一个实战篇. 1.决策树的分类 决策树分为两大 ...

  6. -1-6 java 异常简单介绍 java异常 异常体系 Throwable 分类 throws和throw 异常处理 自定义异常

      异常   异常:异常就是Java程序在运行过程中出现的错误. 异常由来:问题也是现实生活中一个具体事务,也可以通过java 的类的形式进行描述,并封装成对象. 其实就是Java对不正常情况进行描述 ...

  7. [51nod1355] 斐波那契的最小公倍数

    Description 给定 \(n\) 个正整数 \(a_1,a_2,...,a_n\),求 \(\text{lcm}(f_{a_1},f_{a_2},...,f_{a_n})\).其中 \(f_i ...

  8. [转]react 部署在ngnix上(windows环境)

    本文转自:https://blog.csdn.net/wly_er/article/details/82348593 目录 1.下载nginx. 2.测试nginx 3.配置react项目 4.ngi ...

  9. Html5 localStorage 缓存

    1.客户端页面临时存贮数据变化多段,cookie ,session, data-xxx , hidden input 这些司空见惯不废话,我们采用 localStorage 特点:1.数据不会删除,除 ...

  10. 常见MQTT服务器搭建[转载]

    简介 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,它比较适合于在低带宽.不可靠的网络的进行远程传感器和控制设备通 ...