插入排序冒泡排序基本排序算法(冒泡排序,选择排序,插入排序)

本文通过一个C#程序实例展示了插入排序算法的应用。程序首先创建了一个包含随机整数的数组,然后使用插入排序算法对其进行排序,并在排序过程中展示了每一步的状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

改章节笔者在深圳喝咖啡的时候突然想到的...这段时间就有想写几篇关于插入排序冒泡排序的文章,所以回家到之后就奋笔疾书的写出来发表了

    每日一道理
聪明人学习,像搏击长空的雄鹰,仰视一望无际的大地;愚笨的人学习,漫无目的,犹如乱飞乱撞的无头飞蛾;刻苦的人学习,像弯弯的河流,虽有曲折,但终会流入大海;懒惰的人学习,像水中的木头,阻力越大倒退得越快。
using System;
using System.Diagnostics;

namespace TestCArray
{
    class Program
    {
        static void Main(string[] args)
        {
            CArray numbs = new CArray(10);
           
            Random rnd = new Random(10);

            for (int i = 0; i <= 9; i++)
            {
                numbs.Insert(rnd.Next(0,10));
            }

            Console.WriteLine("Before sorting:");
            numbs.DisplayElements();

            Console.WriteLine("During sorting:");
            //numbs.BubbleSort();
            //numbs.SelectionSort();
            numbs.InsertionSort();

            Console.WriteLine("After sorting:");
            numbs.DisplayElements();
        }
    }


    public class CArray
    {
        private int[] arr;
        private int upper;
        private int numElements;

        public CArray(int size)
        {
            arr = new int[size];
            upper = size - 1;
            numElements = 0;
        }

        public void Insert(int item)
        {
            arr[numElements] = item;
            numElements++;
        }

        public void DisplayElements()
        {
            Console.Write("---->");
            for (int i = 0; i <= upper; i++)
            {
                Console.Write(arr[i] + " ");
            }
            Console.WriteLine();
        }

        public void Clear()
        {
            for (int i = 0; i <= upper; i++)
            {
                arr[i] = 0;
            }

            numElements = 0;
        }

        // 冒泡排序
        public void BubbleSort()
        {
            int temp;

            for (int outer = 0; outer <= upper; outer++)
            {
                for (int inner = 0; inner < upper-outer; inner++)
                {
                    if (arr[inner+1]<arr[inner])
                    {
                        temp = arr[inner + 1];
                        arr[inner + 1] = arr[inner];
                        arr[inner] = temp;
                    }
                }
                this.DisplayElements();
            }      
        }

        // 选择排序
        public void SelectionSort()
        {
            int temp;
            for (int outer = 0; outer < upper; outer++)
            {
                for (int inner = outer+1; inner <= upper; inner++)
                {
                    if (arr[outer] > arr[inner])
                    {
                        temp = arr[outer];
                        arr[outer] = arr[inner];
                        arr[inner] = temp;
                    }
                }
                this.DisplayElements();
            }
        }

        // 插入排序
        public void InsertionSort()
        {
            int inner, temp;
            for (int outer = 1; outer <= upper; outer++)
            {
                temp = arr[outer];
                inner = outer;

                while (inner > 0 && arr[inner-1] >= temp)
                {
                    arr[inner] = arr[inner - 1];
                    inner -= 1;
                }

                arr[inner] = temp;

                this.DisplayElements();
            }
        }
    }

    
}

文章结束给大家分享下程序员的一些笑话语录: 问答
Q:你是怎么区分一个内向的程序员和一个外向的程序员的? A:外向的程序员会看着你的鞋和你说话时。
Q:为什么程序员不能区分万圣节和圣诞节? A:这是因为 Oct 31 == Dec 25!(八进制的 31==十进制的 25)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值