快速排序(C#实现)

news/2024/5/19 21:47:53 标签: 快速排序, C#

快速排序

快速排序的思想很简单,但其效率却是排序算法中最高的。

背景

本文介绍快速排序,实现升序排列。

基本理论

在这里插入图片描述

代码实现:

C#">/// <summary>
/// 快速排序
/// </summary>
/// <param name="Key">待排序数组</param>
/// <param name="left">数组最左端索引</param>
/// <param name="right">数组最右端索引</param>
private void Quick(int[] Key, int left, int right)
{
    int current = Key[left];
    int i = left;
    int j = right;

    if (left < right)
    {
        while (i < j) // 当i=j时,表示i之前的数均比current小,之后的数均比current大,即i是current在正确排序序列中的正确位置
        {
            while (Key[j] >= current && i < j)
            {
                j--;
            }
            while (Key[i] <= current && i < j)
            {
                i++;
            }
            if (i < j)
            {
                int temp = Key[i];
                Key[i] = Key[j];
                Key[j] = temp;
            }

        }
        Key[left] = Key[i];
        Key[i] = current; // 将current放置到正确的位置上
        if (left < j - 1)
            Quick(Key, left, j - 1);
        if (j + 1 < right)
            Quick(Key, j + 1, right);
    }

}

public void QuickSort(int[] Key)
{
    Quick(Key, 0, Key.Length - 1);
}

http://www.niftyadmin.cn/n/1051535.html

相关文章

经典SQL语句大全(绝对的经典)

经典SQL语句大全(绝对的经典) 一、基础 1、说明&#xff1a;创建数据库 CREATE DATABASE database-name 2、说明&#xff1a;删除数据库 drop database dbname 3、说明&#xff1a;备份sql server --- 创建 备份数据的 device USE master EXEC sp_addumpdevice …

mysql 删除表中重复数据留一条

create table dept( depno int(2), deptname varchar(30) ) select * from dept limit 3,4 insert into dept values(12,kang6) /*删除重复数据 delete from dept where depno in ( select a.did from (select max(depno) as did from dept group by deptname having cou…

R语言学习笔记之九

摘要: 仅用于记录R语言学习过程&#xff1a; 内容提要&#xff1a; 时间与日期数据的处理&#xff1b; lubridate包&#xff1b; 时间序列介绍及举例 正文&#xff1a; 时间与日期数据的处理 n 导读&#xff1a; u 时间生成函数&#xff1a;as.Date() > as.Date(2017-02-1…

线性表(顺序结构实现)

线性表&#xff08;顺序结构实现&#xff09; 背景 今天来复习 以数组这种顺序结构 实现的线性表 基本理论 线性表的定义以及实现的操作如下&#xff1a; 代码实现 首先定义一个接口&#xff0c;来定义线性表的可进行的操作 /// <summary> /// 线性表接口&#…

分页技巧(基于自定义标签+JSTL+Struts)

这里把自己一些分页的技巧整理下发上来...因为这是在实际项目使用的,,,所以跟其他一些业务方法有关联...还有就是使用了struts和JSTL(包括EL)标签库... 效果如下图: bean代码: CODE:/** 创建日期 2006-1-26* author Woden Wang* power by Heatpixel.com*/package org.woden.mo…

数据结构与算法-7

树与树算法 树的概念 树&#xff08;英语&#xff1a;tree&#xff09;是一种抽象数据类型&#xff08;ADT&#xff09;或是实作这种抽象数据类型的数据结构&#xff0c;用来模拟具有树状结构性质的数据集合。它是由n&#xff08;n>1&#xff09;个有限节点组成一个具有层…

不要为了区块链而区块链

不要为了区块链而区块链 很多人一听说区块链很好&#xff0c;区块链去中心化&#xff0c;安全不可篡改可追溯&#xff0c;点对点交易降低交易成本等&#xff0c;“哇&#xff0c;区块链太好了&#xff01;”惊呼&#xff1a;“终于等到你&#xff01;” 然而去中心化一定是高效…

监控硬盘并发送提醒邮件的shell

当磁盘空间使用大小超过70%时候发送邮件提醒。shell脚本如下 #!/bin/sh admin_addr"XXX126.com" ipaddrifconfig eth0 | awk /inet/{print $2} | awk -F ":" {print $2} df -k | grep dev > MESGF while read LINE do devecho $L…