C#,《小白学程序》第二课:数组与排序

1 文本格式

/// <summary>

/// 《小白学程序》第二课:数组与排序

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

private void button2_Click(object sender, EventArgs e)

{

// #1 数组:一组数据(成员 或 单元)

double[] score = {

540, 340, 650, 120, 554,

643, 612, 234, 345, 456

};

// 数组成员的个数

int n = 10;

// #2 打印数组(顺序输出数组)

// 先组成长长的串,最后再输出;

// StringBuilder 是最常用的进行字符串 数据 组合成常常的字符串的方式;

StringBuilder sb = new StringBuilder();

// AppendLine 加一行;<br> 是换行;

sb.AppendLine("未排序之前的成绩:<br>");

// #3 循环

// for 开始的句子(语句)成为循环,就是顺序处理;

// for 语句详解:定义一个标志 i, 从 0 到 n-1 = (n之前);每次加 1 ;

// 可见数组的标志(下标)是从 0 开始的!!!!!!!

#region 标准写法

for (int i = 0; i < n; i++)

{

sb.AppendLine((i + 1) + ": " + score[i] + "<br>");

}

sb.AppendLine("<br>");

#endregion

#region 另一种写法

#if UNUSED

// for 语句详解:定义一个标志 i, 从 1 到 n = (n+1)之前;每次加 1 ;

for (int i = 1; i < n + 1; i++)

{

sb.AppendLine(i + ": " + score[i - 1] + "<br>");

}

sb.AppendLine("<br>");

#endif

#endregion

// #4 排序

// 两层循环;a 从第一个开始,每次与后面每一个 b 的成绩比较;

// 如果 a 成绩超过 b 成绩的交换;

for (int i = 0; i < n - 1; i++)

{

for (int j = i + 1; j < n; j++)

{

if (score[i] > score[j])

{

// 交换;

// 中间需要一块垫板(stemp)用于临时存放 a成绩

double stemp = score[i];

score[i] = score[j];

score[j] = stemp;

}

}

}

// #5 输出排序后的结果

sb.AppendLine("从小到大排序之后的成绩:<br>");

for (int i = 1; i < n + 1; i++)

{

sb.AppendLine(i + ": " + score[i - 1] + "<br>");

}

sb.AppendLine("<br>");

// #6 输出到一个出口嵌入的网页浏览器

webBrowser1.DocumentText = sb.ToString();

}

2 代码格式

cs 复制代码
/// <summary>
/// 《小白学程序》第二课:数组与排序
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button2_Click(object sender, EventArgs e)
{
    // #1 数组:一组数据(成员 或 单元)
    double[] score = {
        540, 340, 650, 120, 554,
        643, 612, 234, 345, 456
    };
    // 数组成员的个数
    int n = 10;

    // #2 打印数组(顺序输出数组)
    // 先组成长长的串,最后再输出;
    // StringBuilder 是最常用的进行字符串 数据 组合成常常的字符串的方式;
    StringBuilder sb = new StringBuilder();
    // AppendLine 加一行;<br> 是换行;
    sb.AppendLine("未排序之前的成绩:<br>");

    // #3 循环 
    // for 开始的句子(语句)成为循环,就是顺序处理;
    // for 语句详解:定义一个标志 i, 从 0 到 n-1 = (n之前);每次加 1 ;
    // 可见数组的标志(下标)是从 0 开始的!!!!!!!
    #region 标准写法
    for (int i = 0; i < n; i++)
    {
        sb.AppendLine((i + 1) + ": " + score[i] + "<br>");
    }
    sb.AppendLine("<br>");
    #endregion

    #region 另一种写法
#if __UNUSED__
    // for 语句详解:定义一个标志 i, 从 1 到 n = (n+1)之前;每次加 1 ;
    for (int i = 1; i < n + 1; i++)
    {
        sb.AppendLine(i + ": " + score[i - 1] + "<br>");
    }
    sb.AppendLine("<br>");
#endif
    #endregion

    // #4 排序
    // 两层循环;a 从第一个开始,每次与后面每一个 b 的成绩比较;
    // 如果 a 成绩超过 b 成绩的交换;
    for (int i = 0; i < n - 1; i++)
    {
        for (int j = i + 1; j < n; j++)
        {
            if (score[i] > score[j])
            {
                // 交换;
                // 中间需要一块垫板(stemp)用于临时存放 a成绩
                double stemp = score[i];
                score[i] = score[j];
                score[j] = stemp;
            }
        }
    }

    // #5 输出排序后的结果
    sb.AppendLine("从小到大排序之后的成绩:<br>");
    for (int i = 1; i < n + 1; i++)
    {
        sb.AppendLine(i + ": " + score[i - 1] + "<br>");
    }
    sb.AppendLine("<br>");

    // #6 输出到一个出口嵌入的网页浏览器
    webBrowser1.DocumentText = sb.ToString();
}

你非常幸运读到的是世界上 唯一一本真正的程序教程。

相关推荐
王老师青少年编程1 分钟前
csp信奥赛C++高频考点专项训练之贪心算法 --【哈夫曼贪心】:合并果子
c++·算法·贪心·csp·信奥赛·哈夫曼贪心·合并果子
周杰伦fans17 分钟前
AutoCAD .NET 二次开发:深入理解 EntityJig 的工作原理与正确实现
开发语言·.net
叼烟扛炮35 分钟前
C++第二讲:类和对象(上)
数据结构·c++·算法·类和对象·struct·实例化
天疆说42 分钟前
【哈密顿力学】深入解读航天器交会最优控制中的Hamilton函数
人工智能·算法·机器学习
wuweijianlove1 小时前
关于算法设计中的代价函数优化与约束求解的技术7
算法
leoufung2 小时前
LeetCode 149: Max Points on a Line - 解题思路详解
算法·leetcode·职场和发展
样例过了就是过了2 小时前
LeetCode热题100 最长公共子序列
c++·算法·leetcode·动态规划
HXDGCL2 小时前
矩形环形导轨:自动化循环线的核心运动单元解析
运维·算法·自动化
Bat U2 小时前
JavaEE|多线程初阶(七)
java·开发语言
谭欣辰2 小时前
C++ 排列组合完整指南
开发语言·c++·算法