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#使用委托实现的快速排序算法实例
本文实例讲述了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# 快速排序算法
快速排序使用分治法(Divide and conquer)策略来把一个串行(list)分为两个子串行(sub-lists). 步骤为: 1.从数列中挑出一个元素,称为 "基准"(pivot), 2.重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边).在这个分区退出之后,该基准就处于数列的中间位置.这个称为分区(partition)操作. 3.递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序. 递归
-
c#集合快速排序类实现代码分享
说明: 1.集合类型参数化: 2.可根据集合中的对象的各个属性进行排序,传入属性名称即可: 注:属性必须实现了IComparable接口,C#中int.datetime.string等基本类型都已经实现了IComparable接口. 复制代码 代码如下: /// <summary> /// 对集合进行排序,如 /// List<User> users=new List<User>(){.......} /// ListSorter.SortList&l
-
逐步讲解快速排序算法及C#版的实现示例
算法思想 快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序.它采用了一种分治的策略,通常称其为分治法(Divide-and-ConquerMethod). 该方法的基本思想是: 1.先从数列中取出一个数作为基准数. 2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边. 3.再对左右区间重复第二步,直到各区间只有一个数. 虽然快速排序称为分治法,但分治法这三个字显然无法很好的概括快速排序的全部步骤.因此我的对快速排序作了进一步的说明:挖坑填数+分治法:
-
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
随机推荐
- redis集群规范详解
- python连接mysql调用存储过程示例
- Bootstrap Tooltip显示换行和左对齐的解决方案
- 让FLEX日历控件成中文显示的方法
- Java反射机制的学习总结
- 利用ASP.NET MVC和Bootstrap快速搭建响应式个人博客站(一)
- JavaScript判断一个字符串是否包含指定子字符串的方法
- PHP实现格式化文件数据大小显示的方法
- 杏林同学录(六)
- js 自制滚动条的小例子
- SQL Server数据库中的存储过程介绍
- jQuery 右下角滑动弹出可关闭重现层完整代码
- JS 组件系列之BootstrapTable的treegrid功能
- JS 自动完成 AutoComplete(Ajax 查询)
- firefox background-image垂直平铺问题的解决方法
- Java中的代理原理及代理使用示例
- Python使用Paramiko模块编写脚本进行远程服务器操作
- android 使用uinput模拟输入设备的方法
- 实例分析基于PHP微信网页获取用户信息
- 浅谈Spring解决jar包依赖的bom
