考虑到很多面试可能会考察冒泡排序的用法,所以特地花时间厘清了一下思路。下面说一下我的思路:
冒泡排序核心就是比较方法,冒泡排序的比较方法顾名思义就是像气泡一样,最大(或者最小)的数往上冒。
普通比较几个数,我们可以用if(a>b)然后c=a;b=a 。。。。这类方法,把大数暂存到c中,然后小的数存到
原本的比较小的数继续跟其他数比较。冒泡排序也是如此,不过冒泡排序比较的数据比较多,需要用到for循环,
一个数比较完,比较下一个,一直循环到最后一个,先找出最大的数,然后再找第二大的,以此类推。
实现程序如下:

 using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms; namespace BubbleUpSort
{
public partial class Frm_Main : Form
{
public Frm_Main()
{
InitializeComponent();
} private int[] G_int_value;//定义数组字段 private Random G_Random = new Random();//创建随机数对象 private void btn_sort_Click(object sender, EventArgs e)
{
if (G_int_value != null)
{
//定义两个int类型的变量,分别用来表示数组下标和存储新的数组元素
int j, temp;
for (int i = ; i < G_int_value.Length - ; i++)//根据数组下标的值遍历数组元素
{
j = i + ;
id://定义一个标识,以便从这里开始执行语句
if (G_int_value[i] > G_int_value[j])//判断前后两个数的大小
{
temp = G_int_value[i];//将比较后大的元素赋值给定义的int变量
G_int_value[i] = G_int_value[j];//将后一个元素的值赋值给前一个元素
G_int_value[j] = temp;//将int变量中存储的元素值赋值给后一个元素
goto id;//返回标识,继续判断后面的元素
}
else
if (j < G_int_value.Length - )//判断是否执行到最后一个元素
{
j++;//如果没有,则再往后判断
goto id;//返回标识,继续判断后面的元素
}
}
txt_str2.Clear();//清空控件内字符串
foreach (int i in G_int_value)//遍历字符串集合
{
txt_str2.Text += i.ToString() + ", ";//向控件内添加字符串
}
}
else
{
MessageBox.Show("首先应当生成数组,然后再进行排序。", "提示!");
}
} private void btn_Generate_Click(object sender, EventArgs e)
{
G_int_value = new int[G_Random.Next(, )];//生成随机长度数组
for (int i = ; i < G_int_value.Length; i++)//遍历数组
{
G_int_value[i] = G_Random.Next(, );//为数组赋随机数值
}
txt_str.Clear();//清空控件内字符串
foreach (int i in G_int_value)//遍历字符串集合
{
txt_str.Text += i.ToString() + ", ";//向控件内添加字符串 }
}
}
}

设计代码如下:

namespace BubbleUpSort
{
partial class Frm_Main
{
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.IContainer components = null; /// <summary>
/// 清理所有正在使用的资源。
/// </summary>
/// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
} #region Windows 窗体设计器生成的代码 /// <summary>
/// 设计器支持所需的方法 - 不要
/// 使用代码编辑器修改此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.btn_sort = new System.Windows.Forms.Button();
this.btn_Generate = new System.Windows.Forms.Button();
this.groupBox1 = new System.Windows.Forms.GroupBox();
this.txt_str = new System.Windows.Forms.TextBox();
this.groupBox2 = new System.Windows.Forms.GroupBox();
this.txt_str2 = new System.Windows.Forms.TextBox();
this.groupBox1.SuspendLayout();
this.groupBox2.SuspendLayout();
this.SuspendLayout();
//
// btn_sort
//
this.btn_sort.Location = new System.Drawing.Point(, );
this.btn_sort.Name = "btn_sort";
this.btn_sort.Size = new System.Drawing.Size(, );
this.btn_sort.TabIndex = ;
this.btn_sort.Text = "冒泡排序";
this.btn_sort.UseVisualStyleBackColor = true;
this.btn_sort.Click += new System.EventHandler(this.btn_sort_Click);
//
// btn_Generate
//
this.btn_Generate.Location = new System.Drawing.Point(, );
this.btn_Generate.Name = "btn_Generate";
this.btn_Generate.Size = new System.Drawing.Size(, );
this.btn_Generate.TabIndex = ;
this.btn_Generate.Text = "生成随机数组";
this.btn_Generate.UseVisualStyleBackColor = true;
this.btn_Generate.Click += new System.EventHandler(this.btn_Generate_Click);
//
// groupBox1
//
this.groupBox1.Controls.Add(this.txt_str);
this.groupBox1.Controls.Add(this.btn_Generate);
this.groupBox1.Location = new System.Drawing.Point(, );
this.groupBox1.Name = "groupBox1";
this.groupBox1.Size = new System.Drawing.Size(, );
this.groupBox1.TabIndex = ;
this.groupBox1.TabStop = false;
this.groupBox1.Text = "生成随机数组";
//
// txt_str
//
this.txt_str.Location = new System.Drawing.Point(, );
this.txt_str.Multiline = true;
this.txt_str.Name = "txt_str";
this.txt_str.Size = new System.Drawing.Size(, );
this.txt_str.TabIndex = ;
//
// groupBox2
//
this.groupBox2.Controls.Add(this.txt_str2);
this.groupBox2.Controls.Add(this.btn_sort);
this.groupBox2.Location = new System.Drawing.Point(, );
this.groupBox2.Name = "groupBox2";
this.groupBox2.Size = new System.Drawing.Size(, );
this.groupBox2.TabIndex = ;
this.groupBox2.TabStop = false;
this.groupBox2.Text = "排序随机数组";
//
// txt_str2
//
this.txt_str2.Location = new System.Drawing.Point(, );
this.txt_str2.Multiline = true;
this.txt_str2.Name = "txt_str2";
this.txt_str2.Size = new System.Drawing.Size(, );
this.txt_str2.TabIndex = ;
//
// Frm_Main
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(, );
this.Controls.Add(this.groupBox2);
this.Controls.Add(this.groupBox1);
this.Name = "Frm_Main";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "使用冒泡排序法对一维数组进行排序";
this.groupBox1.ResumeLayout(false);
this.groupBox1.PerformLayout();
this.groupBox2.ResumeLayout(false);
this.groupBox2.PerformLayout();
this.ResumeLayout(false); } #endregion private System.Windows.Forms.Button btn_sort;
private System.Windows.Forms.Button btn_Generate;
private System.Windows.Forms.GroupBox groupBox1;
private System.Windows.Forms.GroupBox groupBox2;
private System.Windows.Forms.TextBox txt_str;
private System.Windows.Forms.TextBox txt_str2;
}
}

C#冒泡排序程序的更多相关文章

  1. C#实现随机抽奖和冒泡排序

    随机抽奖程序 string[] s = new string[] { "A", "B", "C", "D", " ...

  2. mpi冒泡排序并行化

    一.实验目的与实验要求 1.实验目的 (1)学会将串行程序改为并行程序. (2)学会mpich2的使用. (3)学会openmp的配置. (4)mpi与openmp之间的比较. 2.实验要求 (1)将 ...

  3. Java基础语法(三)---数组

    一.概念         同一种类型数据的集合.简单的来说就是一容器,用来装东西的. 使用数组的好处:可以自动给数组中的元素从0开始编号,方便操作这些元素. 二.一维数组的格式 格式1:元素类型 [ ...

  4. Java Collections API和泛型

    Java Collections API和泛型 数据结构和算法 学会一门编程语言,你可以写出一些可以工作的代码用计算机来解决一些问题,然而想要优雅而高效的解决问题,就要学习数据结构和算法了.当然对数据 ...

  5. 高射炮打蚊子丨在VS 2017里用C语言写经典的冒泡排序

    ​上一期<高射炮打蚊子丨用Visual Studio 2017写最初级的C语言程序>中,我们用Visual Studio “全宇宙最强IDE”这门大炮,打了“C语言写Hello World ...

  6. 060 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 07 冒泡排序

    060 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 07 冒泡排序 本文知识点:冒泡排序 冒泡排序 实际案例分析冒泡排序流程 第1轮比较: 第1轮比较的结果:把最 ...

  7. 暑假自学java第十一天

    1,使用java.util.Arrays类处理数组 (1 ) public static void sort(数值类型 [ ] a):对指定的数值型数组按数字升序进行排序.在数组排序中设计一个简单的冒 ...

  8. vue源码逐行注释分析+40多m的vue源码程序流程图思维导图 (diff部分待后续更新)

    vue源码业余时间差不多看了一年,以前在网上找帖子,发现很多帖子很零散,都是一部分一部分说,断章的很多,所以自己下定决定一行行看,经过自己坚持与努力,现在基本看完了,差ddf那部分,因为考虑到自己要换 ...

  9. 冒泡,选择,插入,快速排序在Java中的实现

    近几天再重新看数据结构的书时,根据各种排序的空间复杂度,发现快速排序所用时间是最短的,也即是说快速排序的速度最快.因此想验证一下具体这几个排序发的快慢,所以在Java中得以实现,同时在运行时,发现虽然 ...

随机推荐

  1. Leetcode初级算法(字符串篇)

    目录 反转字符串 颠倒整数 字符串中的第一个唯一字符 有效的字母异位词 验证回文字符串 实现strStr() 数数并说 最长公共前缀 字符串转整数(atoi) 反转字符串 和vector同样的进行sw ...

  2. spring boot 报错

    错误1: 循环 的 请求. ..例如  cirle..url 在返回的模板路径上 加速 "/" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 错误2 : 添加了sh ...

  3. Vue 3 --安装脚手架、过滤器、生命周期的钩子函数、vue-router基本使用

    一.安装脚手架 1.下载node.js,本文下载版本为node-v8.12.0-x64.msi,一键式安装. 2.安装完成后,打开终端,输入node,可进入node环境(两次ctrl+c退出),如下图 ...

  4. 【ACM】拦截导弹 - 0-1背包问题

    拦截导弹 时间限制:3000 ms  |  内存限制:65535 KB 难度:3   描述 某国为了防御敌国的导弹袭击,发展中一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到 ...

  5. 009 Palindrome Number 判断一个正整数是否是回文数

    详见:https://leetcode.com/problems/palindrome-number/description/ 实现语言:Java 方法一: class Solution { publ ...

  6. javascript模块化编程规范

    一.javascript模块化编程规范: 二.关于commenjs规范和AMD规范: 根本不同:前者用于服务器端同步加载模块:后者是客户端异步加载模块. 同点:两者都有一个全局函数require(), ...

  7. jquery的.get方法说解

    ·Customer类 public class Customer { public int Unid { get; set; } public string CustomerName { get; s ...

  8. JAVA基础系列(一) 概述与相关概念

    万事开头难,来这个平台上已经有一段时间了,看到了很多高质量的文章,也很喜欢这种简约的风格.一直也想把自己的零散的知识体系组织起来,但苦于自己拙劣的文笔和不成流派的风格让大家笑话,直到现在才开始.可是从 ...

  9. OC与JS交互前言

    OC与JS交互过程中,可能会需要使用本地image资源及html,css,js文件,这些资源应该如何被加载? 一.WebView加载HTML UIWebView提供了三个方法来加载html资源 1.  ...

  10. python_3 :用python微信跳一跳

    [学习使用他人代码] 2018年01月21日 19:29:02 独行侠的守望 阅读数:319更多 个人分类: Python 编辑 版权声明:本文为博主原创文章,转载请注明文章链接. https://b ...