C#快速排序算法实例分析
本文实例讲述了C#快速排序算法。分享给大家供大家参考。具体实现方法如下:
public static int[] QuickSort(int[] arr) { if (arr.Length <= 1) return arr; int pivot = arr.Length - 1; int[] less = GetLessThanEqualToPivot(arr, pivot); int[] greater = GetGreaterThanPivot(arr, pivot); return Concatenate(QuickSort(less),arr[pivot],QuickSort(greater)); } public static int[] Concatenate(int[] less,int pivotElement,int[] greater) { List<int> _result = new List<int>(); _result.AddRange(less); _result.Add(pivotElement); _result.AddRange(greater); return _result.ToArray(); } public static int[] GetLessThanEqualToPivot(int[] arr, int pivot) { List<int> _result = new List<int>(); for (int i = 0; i < arr.Length - 1; i++) { if (arr[i] <= arr[pivot]) { _result.Add(arr[i]); } } return _result.ToArray(); } public static int[] GetGreaterThanPivot(int[] arr, int pivot) { List<int> _result = new List<int>(); for (int i = 0; i < arr.Length - 1; i++) { if (arr[i] > arr[pivot]) { _result.Add(arr[i]); } } return _result.ToArray(); }
希望本文所述对大家的C#程序设计有所帮助。
相关推荐
-
c#集合快速排序类实现代码分享
说明: 1.集合类型参数化: 2.可根据集合中的对象的各个属性进行排序,传入属性名称即可: 注:属性必须实现了IComparable接口,C#中int.datetime.string等基本类型都已经实现了IComparable接口. 复制代码 代码如下: /// <summary> /// 对集合进行排序,如 /// List<User> users=new List<User>(){.......} /// ListSorter.SortList&l
-
C#使用委托实现的快速排序算法实例
本文实例讲述了C#使用委托实现的快速排序算法.分享给大家供大家参考.具体如下: class QuickSort { private delegate int CmpOp(object Left, object Right); private void swap(object[] Array, int Left, int Right, CmpOp Cmp) { object tempObj = Array[Left]; Array[Left] = Array[Right]; Array[Right
-
C#中使用快速排序按文件创建时间将文件排序的源码
快速排序类 using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using Sy
-
逐步讲解快速排序算法及C#版的实现示例
算法思想 快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序.它采用了一种分治的策略,通常称其为分治法(Divide-and-ConquerMethod). 该方法的基本思想是: 1.先从数列中取出一个数作为基准数. 2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边. 3.再对左右区间重复第二步,直到各区间只有一个数. 虽然快速排序称为分治法,但分治法这三个字显然无法很好的概括快速排序的全部步骤.因此我的对快速排序作了进一步的说明:挖坑填数+分治法:
-
c# 快速排序算法
快速排序使用分治法(Divide and conquer)策略来把一个串行(list)分为两个子串行(sub-lists). 步骤为: 1.从数列中挑出一个元素,称为 "基准"(pivot), 2.重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边).在这个分区退出之后,该基准就处于数列的中间位置.这个称为分区(partition)操作. 3.递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序. 递归
-
C#排序算法之快速排序
快速排序实现: 复制代码 代码如下: namespace QuickSort { class QuickSort { public static void Sort(int[] array) { DoSort(array,0, array.Length-1); } private static void DoSort( int[] array, int start, int end) { if( start < end) { int temp = Partition(array, start,
-
Python快速排序算法实例分析
本文实例讲述了Python快速排序算法.分享给大家供大家参考,具体如下: 快速排序的时间复杂度是O(NlogN) 算法描述: ① 先从序列中取出一个数作为基准数 ② 分区过程, 将比这个数大的数全部放到它的右边, 小于或等于它的数全部放到它的左边 ③ 再对左右区间重复第二步, 直到各区间只有一个数 假设对 6, 1, 2, 7, 9, 3, 4, 5, 10, 8 进行排序, 首先在这个序列中随便找一个基准数(用来参照), 比如选择 6 为基准数, 接下来把所有比基准数大的数放在6的右边, 比6
-
C#快速排序算法实例分析
本文实例讲述了C#快速排序算法.分享给大家供大家参考.具体实现方法如下: public static int[] QuickSort(int[] arr) { if (arr.Length <= 1) return arr; int pivot = arr.Length - 1; int[] less = GetLessThanEqualToPivot(arr, pivot); int[] greater = GetGreaterThanPivot(arr, pivot); return Con
-
PHP快速排序算法实例分析
本文实例讲述了PHP快速排序算法.分享给大家供大家参考,具体如下: 快速排序:在无序的数组$data中,选择任意一个值作为对比值,定义i为头部检索索引,j为尾部检索索引, 算法步骤: (1)初始化对比值$value=$data[0],$i=1,$j=count($data)-1 (2)首先从尾部开始检索,判断$data[$j]是否小于$value,若不小于则$j--,继续检索,直到找到比$value小的坐标 (3)这时开始头部检索,判断$data[$i]是否大于$value,若不大于则$i++,
-
Java的Arrays.sort()方法排序算法实例分析
暂时网上看过很多JDK8中Arrays.sort的底层原理,有些说是插入排序,有些说是归并排序,也有说大于域值用计数排序法,否则就使用插入排序...其实不全对.让我们分析个究竟: // Use Quicksort on small arrays if (right - left < QUICKSORT_THRESHOLD) { //QUICKSORT_THRESHOLD = 286 sort(a, left, right, true); return; } 数组一进来,会碰到第一个阀值QUICK
-
PHP折半(二分)查找算法实例分析
本文实例讲述了PHP折半(二分)查找算法.分享给大家供大家参考,具体如下: 折半查询只适用于已经按照正序或者逆序排序的数组,字符串等: 算法: 先取数组的中间位置,无中间位置,则向下取整: 从中间进行折半,大小判断,进入前半段或者后半段: 再对前半段或者后半段进行同样的折半查询, 直到查询到匹配的字符,才停止(本例用break,如果置于函数中,return即可) php实现的代码如下: <?php $arr = array(1,2,3,4,5,6,7,8,9,10);//数组 $key = 4;
-
php排序算法实例分析
本文实例分析了php排序算法.分享给大家供大家参考,具体如下: 用PHP写排序,虽然PHP自动了很多排序方式,SQL语句也可以很快速的从数据库里有序的读出数据.但是不同的需求还有灵活 运用所学的PHP基础知识. 我想完成如下的效果 排序算法效果图 就是把一个数值中所以的数据按时间排序并且分行显示 <?php $array = $mysql->query_array($mysql->sql_select("user","userid,truename,year
-
C语言实现快速排序算法实例
首先我们要对一组数据进行排序: 在数组中选一个基准数(通常为数组第一个,黄圈圈标记了): 将数组中小于基准数的数据移到基准数左边,大于基准数的移到右边,怎么移动,后面说: 对于基准数左.右两边的数组,不断重复以上两个过程,直到每个子集只有一个元素,即为全部有序. 好了,咱们开始吧! 快速排序需要两个哨兵,i 和 j,分别指向数组的头和尾.接下来就要进行移动. 我们通常选择第一个元素作为基准数,去移动数组元素,使其达到这个基准数的左边都是小于它的,右边都是大于它的.开始移动 i 和 j , i 和
-
PHP树的深度编历生成迷宫及A*自动寻路算法实例分析
本文实例讲述了PHP树的深度编历生成迷宫及A*自动寻路算法.分享给大家供大家参考.具体分析如下: 有一同事推荐了三思的迷宫算法,看了感觉还不错,就转成php 三思的迷宫算法是采用树的深度遍历原理,这样生成的迷宫相当的细,而且死胡同数量相对较少! 任意两点之间都存在唯一的一条通路. 至于A*寻路算法是最大众化的一全自动寻路算法 废话不多说,贴上带代码 迷宫生成类: 复制代码 代码如下: class Maze{ // Maze Create private $_w; priv
-
go语言睡眠排序算法实例分析
本文实例讲述了go语言睡眠排序算法.分享给大家供大家参考.具体分析如下: 睡眠排序算法是一个天才程序员发明的,想法很简单,就是针对数组里的不同的数开多个线程,每个线程根据数的大小睡眠,自然睡的时间越长的,数越大,哈哈,搞笑吧,这种算法看起来很荒唐,但实际上很天才,它可以充分利用多核cpu进行计算. 复制代码 代码如下: package main import ( "fmt" "time" ) func main() { tab := []in
随机推荐
- Vue.JS入门教程之处理表单
- 浅析node连接数据库(express+mysql)
- Java字符串转成二进制码的方法
- php链表用法实例分析
- php采集文章中的图片获取替换到本地(实现代码)
- C 语言中实现环形缓冲区
- js中parseFloat(参数1,参数2)定义和用法及注意事项
- PHP面向对象详解(三)
- php查找指定目录下指定大小文件的方法
- php 进阶:实现无限分类第1/4页
- DropDownList控件绑定数据源的三种方法
- 深入理解JavaScript编程中的原型概念
- 使用Windows防火墙十大经典问题荟萃
- c语言读取obj文件转换数据的小例子
- servlet之cookie简介_动力节点Java学院整理
- Android编程设计模式之解释器模式详解
- Spring Cloud Alibaba Nacos 入门详解
- Java二维数组实战案例
- Python实现决策树C4.5算法的示例
- python中将正则过滤的内容输出写入到文件中的实例