美文网首页
快速排序(c#)

快速排序(c#)

作者: 仙肉君 | 来源:发表于2018-11-24 22:19 被阅读0次

快速排序法


操作

1.用Partition()函数取得划分数,严的教材该数选的是数组第一个数。

2.将小于划分树的左侧放小于它的数,在右边放比它大的数。此时划分数的位置不需移动,就为它的排序完成后的位置。

3.将划分数的左侧数组和右侧数组分别迭代,直到左右数组为空或者为1。


代码

划分算法

//划分区域返回划分点的最终位置
        public int Partition(int[] s,int low, int high)
        {
            //选数组的第一个点为划分点
            int pos=s[low];
            while(low<high)
            {
                //划分大于划分点区域
                while(s[high]>=pos&&low<high) --high;
                s[low]=s[high];
                //此时high可被覆盖,因为已被赋值到low中
                while(s[low]<=pos&&low<high) ++low;
                s[high]=s[low];
            }
            s[low]=pos;
            return low;
        }

返回值:low(为最终划分数的位置)

迭代排序

//递归方式
        public void RecursiveQSott(int[] s,int low,int high)
        {
            if(low<high)
            {
                int pivotpos=Partition(s,low,high);
                //对小于部分区域排序
                RecursiveQSott(s,low,pivotpos-1);
                 //对大于部分区域排序
                RecursiveQSott(s,pivotpos+1,high);
            }
        }

相关文章

  • 快速排序(c#)

    快速排序法 操作 1.用Partition()函数取得划分数,严的教材该数选的是数组第一个数。 2.将小于划分树的...

  • C#:快速排序

  • 快速排序 C#实现

    以2000万个0~9999的随机数进行测试:

  • c# 快速排序 归并排序

    快速排序 (重要) 分治、递归时间复杂度O(Nlog N) , N是数组的长度 归并排序 (重要) 时间复杂度O...

  • C#排序算法之快速排序

    快速排序,也叫分治法,是9种经典排序方法中效率最高的。 原理:以升序为例,每轮比较之后,保证基准值左边的数比它小,...

  • 如何在 Windows 上安装 MongoDB

    MongoDB C# Driver 管理快速入门指南MongoDB C# Driver 快速入门指南Windows...

  • 七大排序算法之快速排序

    七大排序算法之快速排序 @(算法笔记)[排序算法, 快速排序, C++实现] [TOC] 快速排序的介绍: 快速排...

  • 面试准备--排序

    堆排序 快速排序(simple) 快速排序(regular) 归并排序 Shell排序 插入排序 选择排序 冒泡排序

  • 排序

    插入排序 选择排序 冒泡排序 归并排序 快速排序* 三路快速排序

  • 算法笔记01-排序#2

    快速排序敢叫快速排序,那它一定得快。 快速排序 概述 快速排序也是分治排序的典型,它快,而且是原地排序。不过,要防...

网友评论

      本文标题:快速排序(c#)

      本文链接:https://www.haomeiwen.com/subject/igcuqqtx.html