C#实现快速排序算法

 C#实现快速排序算法

以下是C#中的快速排序算法实现示例:

using System;

class QuickSort
{
    // 快速排序入口函数
    public static void Sort(int[] array)
    {
        QuickSortRecursive(array, 0, array.Length - 1);
    }

    // 递归函数实现快速排序
    private static void QuickSortRecursive(int[] array, int left, int right)
    {
        if (left < right)
        {
            int pivotIndex = Partition(array, left, right);
            QuickSortRecursive(array, left, pivotIndex - 1);
            QuickSortRecursive(array, pivotIndex + 1, right);
        }
    }

    // 划分函数
    private static int Partition(int[] array, int left, int right)
    {
        int pivot = array[right];
        int i = left - 1;

        for (int j = left; j < right; j++)
        {
            if (array[j] < pivot)
            {
                i++;
                Swap(array, i, j);
            }
        }

        Swap(array, i + 1, right);
        return i + 1;
    }

    // 交换数组中的两个元素
    private static void Swap(int[] array, int i, int j)
    {
        int temp = array[i];
        array[i] = array[j];
        array[j] = temp;
    }

    // 打印数组元素
    public static void PrintArray(int[] array)
    {
        foreach (var item in array)
        {
            Console.Write(item + " ");
        }
        Console.WriteLine();
    }

    // 测试示例
    static void Main(string[] args)
    {
        int[] array = { 12, 4, 7, 2, 10, 1, 15, 3, 6, 11 };
        Console.WriteLine("Original array:");
        PrintArray(array);

        Sort(array);
        Console.WriteLine("Sorted array:");
        PrintArray(array);
    }
}

这段代码实现了快速排序算法。在 Sort 函数中,我们首先调用 QuickSortRecursive 函数来递归地执行快速排序。QuickSortRecursive 函数中,我们首先选择一个基准元素(这里选择数组的最后一个元素作为基准),然后根据基准元素将数组分为两部分,左侧部分小于基准,右侧部分大于等于基准。然后再分别对左右两部分递归执行快速排序。

Partition 函数负责实现划分步骤,它遍历数组,将小于基准的元素放在左侧,大于等于基准的元素放在右侧,并返回基准的最终位置。

Swap 函数用于交换数组中的两个元素。

PrintArray 函数用于打印数组元素。

Main 函数中,我们创建一个示例数组,并调用 Sort 函数对其进行排序,然后打印排序后的结果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/439385.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

IonIa: High-Performance Replication for Modern Disk-based KV Stores——论文泛读

FAST 2024 Paper 论文阅读笔记整理 问题 键值存储在数据中心应用程序中发挥着核心作用&#xff0c;许多KV存储都是使用写优化索引&#xff08;WOI&#xff09;&#xff08;如LSM[58]&#xff09;构建的&#xff0c;称为WO-KV存储。最近的WO-KV存储针对现代SSD进行了优化&…

python: import用法

目录 1.import1.1从当前文件夹下1.2从python库目录中导入库2.使用1.3 总结1.4 2.定义参考&#xff1a; 1.import 常用 1.1从当前文件夹下 1.2从python库目录中导入库 在控制台通过pip install 库名的命令安装库&#xff0c;库将被安装到python文件夹的库目录下。 2.使用 …

用 ChatGPT 帮自己修英文简历 — 程序员篇

写英文简历一直是许多人的痛处&#xff0c;怎么写得文法正确又吸引人&#xff0c;对于不是英文母语人士的人&#xff0c;是相当困难的。即使网路上有很多教学文&#xff0c;但看完之后还是不知道该怎么描述。导致很多人最后还是去找简历编修。不过现在有了 ChatGPT 这类 AI 工具…

离散数学——(3)联结词及对应的真值指派,最小全功能联结词集,对偶式,范式,范式存在定理,小项

目录 1.联结词及对应的真值指派 2.最小全功能联结词集 3.对偶式 4.范式 1.析取范式 5.范式存在定理 6.小项 1.联结词及对应的真值指派 2.最小全功能联结词集 3.对偶式 4.范式 1.析取范式 5.范式存在定理 6.小项

20个Python函数程序实例

前面介绍的函数太简单了&#xff1a; 以下是 20 个不同的 Python 函数实例 下面深入一点点&#xff1a; 以下是20个稍微深入一点的&#xff0c;使用Python语言定义并调用函数的示例程序&#xff1a; 20个函数实例 简单函数调用 def greet():print("Hello!")greet…

连接kafka报错:java.io.IOException: Can‘t resolve address:

修改电脑host文件:C:\Windows\System32\drivers\etc\hosts 加上一行 192.168.1.XXX MHA_SLAVE2&#xff08;192.168.1.XXX 这个是安装kafka 的服务器地址&#xff0c;MHA_SLAVE2是kafka的容器id&#xff09;

国家妇女节放假是法定的假日

在这个充满活力和希望的春天&#xff0c;我们迎来了一个特殊的节日——国家妇女节。这是一个属于所有女性的节日&#xff0c;是一个庆祝女性成就、关爱女性权益的时刻。在这个特殊的日子里&#xff0c;我们不禁要问&#xff1a;国家妇女节放假是法定假日吗&#xff1f;让我们一…

Vscode连接远程服务器失败解决方案

一、 could not establish connection to “XXX” 尝试使用Remote-SSH插件连接远程的服务器&#xff0c;但是配置显示出错&#xff0c;端口显示试图写入的管道不存在&#xff0c;弹出窗口显示could not establish connection to “XXX” 二、检查Windows的OpenSSH 1.检索是否…

centos设置SSH密钥认证,使用scp命令复制文件

1&#xff09;本地查看是否已经生成SSH密钥&#xff08;id_rsa、id_rsa.pub代表已经有SSH密钥&#xff09;&#xff1a;ls ~/.ssh 2&#xff09;本地生成SSH密钥对&#xff08;我这边3个直接回车&#xff09;&#xff1a;ssh-keygen -t rsa 3&#xff09;将本地公钥(/root/.ssh…

Python数据处理实战(5)-上万行log数据提取并分类进阶版

系列文章&#xff1a; 0、基本常用功能及其操作 1&#xff0c;20G文件&#xff0c;分类&#xff0c;放入不同文件&#xff0c;每个单独处理 2&#xff0c;数据的归类并处理 3&#xff0c;txt文件指定的数据处理并可视化作图 4&#xff0c;上万行log数据提取并作图进阶版 …

【Linux】iftop命令详解

目录 一、iftop简介 二、安装iftop命令 2.1 命令查看测试环境系统信息 2.2 查看iftop版本与命令帮助 三、iftop的基本使用 3.1 直接使用iftop命令 3.2 iftop的显示说明 3.3 指定监控某块网卡 3.4 显示某个网段进出封包流量 3.5 按照流量排序 3.6 过滤显示连接 3.7 …

基于单片机的老人防丢系统设计

目 录 摘 要 I Abstract II 引 言 3 1 系统总体架构 6 1.1方案设计与选择 6 1.2 系统架构设计 6 1.3 系统器件选择 7 2 系统硬件设计 9 2.1 单片机外围电路设计 9 2.2 LCD1602液晶显示电路设计 12 2.3 短信模块电路设计 14 2.4 GPS模块电路设计 14 2.5 电源与按键控制电路设计…

OpenStack之Nova

一 、Nova 使用OpenStack Compute来托管和管理云计算系统。 OpenStack Compute是基础架构即服务 &#xff08;IaaS&#xff09;系统的主要部分。 主要模块在Python中实现&#xff1a; 1因为认证&#xff0c;与OpenStack 身份认证keystone 交互。 2因为磁盘和服务器镜像&#xf…

红酒:酿造过程中的设备升级与技术革新

随着科技的不断进步&#xff0c;葡萄酒酿造行业也在经历着设备升级与技术革新的浪潮。云仓酒庄作为业界的持续发展者&#xff0c;始终关注行业动态&#xff0c;积极引入创新的酿造设备和技术&#xff0c;以提升雷盛红酒系列的品质和生产效率。本文将和云仓酒庄雷盛红酒一起探讨…

在钉钉群中添加极狐GitLab 机器人

GitLab 是一个全球知名的一体化 DevOps 平台&#xff0c;很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版&#xff0c;专门为中国程序员服务。可以一键式部署极狐GitLab。 可以在钉钉群中添加极狐GitLab 机器人实现消息通知&#xff0c…

java SSM旅游景点与公交线路查询系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 java SSM旅游景点与公交线路查询系统是一套完善的web设计系统&#xff08;系统采用SSM框架进行设计开发&#xff0c;springspringMVCmybatis&#xff09;&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系…

使用Python获取B站视频并在本地实现弹幕播放功能

目录 一、获取B站视频 二、弹幕获取与解析 三、本地视频播放与弹幕同步 四、案例与代码实现 五、总结 随着网络技术的不断发展&#xff0c;视频分享平台如B站&#xff08;Bilibili&#xff09;已成为广大网友观看、分享视频的重要场所。然而&#xff0c;有时候我们可能希望…

3.7 FreeRTOS day2

思维导图&#xff1a; 1.使用ADC采样光敏电阻数值&#xff0c;如何根据这个数值调节LED灯亮度。 配置ADC以读取光敏电阻的电压值&#xff0c;配置PWM以控制LED的亮度。使用ADC读取光敏电阻的电压值。这个值将随着环境光线的变化而变化。将ADC读取的原始值映射到一个更易于处理…

3/8—88. 合并两个有序数组

代码实现&#xff1a; void merge(int *nums1, int nums1Size, int m, int *nums2, int nums2Size, int n) {int i 0 , j 0;while (i < m && j < n) {if (nums2[j] < nums1[i]) {for (int k m - 1; k > i; k--) {nums1[k 1] nums1[k];}nums1[i] nums…

点亮城市名片丨计讯物联智慧灯杆系统在通讯基地的成功应用

项目背景 在国家新型城镇化大背景下&#xff0c;十四五规划纲要强调“加快数字化发展&#xff0c;建设数字中国”&#xff0c;明确提出“以数字化助推城乡发展和治理模式创新”&#xff0c;全面提高城市的运行效率和宜居程度。 项目概况 为满足灯杆灯光亮度的远程智能管理、对…