冒泡排序(C#)

时光总嘲笑我的痴心妄想 提交于 2020-01-14 06:25:18
冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法
它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。
这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。
第一种实现方法:
Default2.aspx:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <asp:TextBox ID="sa" runat="server"></asp:TextBox>
            <asp:Button ID="sa1" Text="冒泡排序正序" runat="server" OnClick="sa1_Click" />
            <asp:Button ID="sa2" Text="冒泡排序倒序" runat="server" OnClick="sa2_Click" />
        </div>
    </form>
</body>
</html>

Default2.aspx.cs:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class Default2 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
    }
    protected void sa1_Click(object sender, EventArgs e)
    {
        string[] iNums = Convert.ToString(sa.Text.Trim()).Split(',');
        int[] split = Array.ConvertAll<string, int>(iNums, int.Parse);
        //正序排列:
        for (int i = 0; i < split.Length - 1; i++)//外层循环控制循环次数
        {
            for (int j = 0; j < split.Length - i - 1; j++)//内层循环用于交换相邻要素
            {
                int temp;
                if (split[j] >split[j + 1])
                {
                    temp =split[j + 1];
                    split[j + 1] = split[j];
                    split[j] =temp;
                }
            }
        }
        foreach (int outint in split)
        {
            Response.Write(+outint + "\t");
        }
    }
    protected void sa2_Click(object sender, EventArgs e)
    {
        string[] iNums = Convert.ToString(sa.Text.Trim()).Split(',');
        int[] split = Array.ConvertAll<string, int>(iNums, int.Parse);
        //倒序排列:
        for (int i = 0; i < split.Length - 1; i++)//外层循环控制循环次数
        {
            for (int j = 0; j < split.Length - i - 1; j++)//内层循环用于交换相邻要素
            {
                int temp;
                if (split[j] < split[j + 1])
                {
                    temp = split[j];
                    split[j] = split[j + 1];
                    split[j + 1] = temp;
                }
            }
        }
        foreach (int outint in split)
        {
            Response.Write(+outint + "\t");
        }
    }
}

结果如下:

正序

倒序

第二种实现方法(控制台方法):

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            //接收用户输入
            Console.WriteLine("请输入5个正整数:");
            int[] myArray = new int[5];
            for (int i = 0; i < myArray.Length; i++)
            {
                myArray[i] = int.Parse(Console.ReadLine());//循环输入5个正整数,enter切换
            }
            //正序排列:
            for (int i = 0; i < myArray.Length - 1; i++)//外层循环控制循环次数
            {
                for (int j = 0; j < myArray.Length - i - 1; j++)//内层循环用于交换相邻要素
                {
                    int temp;
                    if (myArray[j] > myArray[j + 1])
                    {
                        temp = myArray[j + 1];
                        myArray[j + 1] = myArray[j];
                        myArray[j] = temp;
                    }
                }
            }
            Console.WriteLine("正序序排列为:");
            foreach (int outint in myArray)
            {
                Console.Write(+outint + "\t");
            }
            Console.WriteLine();
            //倒序排列为:
            for (int i = 0; i < myArray.Length - 1; i++)//外层循环控制循环次数
            {
                for (int j = 0; j < myArray.Length - i - 1; j++)//内层循环用于交换相邻要素
                {
                    int temp;
                    if (myArray[j] < myArray[j + 1])
                    {
                        temp = myArray[j];
                        myArray[j] = myArray[j + 1];
                        myArray[j + 1] = temp;
                    }
                }
            }
            Console.WriteLine("倒序排列为:");
            foreach (int outint in myArray)
            {
                Console.Write(outint + "\t");
            }
            Console.ReadKey();
        }
    }
}

结果如下:

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!