C#算法-------(四)快速排序

原创 2001年10月23日 22:41:00

      前面我已经推出了三种排序的算法,比较简单。今天我又写了快速排序的算法。希望多多指教。具体的思想,我不做答了。前人的经验。

using System;

namespace QuickSorter
{
 public class QuickSorter
 {
  private void Swap(ref int l,ref int r)
  {
   int s;
   s=l;
   l=r;
   r=s;
  }
  public void Sort(int [] list,int low,int high)
  {
   int pivot;
   int l,r;
   int mid;
   if(high<=low)
    return;
   else if(high==low+1)
   {
    if(list[low]>list[high])
     Swap(ref list[low],ref list[high]);
    return;
   }
   mid=(low+high)>>1;
   pivot=list[mid];
   Swap(ref list[low],ref list[mid]);
   l=low+1;
   r=high;
   do
   {
   while(l<=r&&list[l]<pivot)
    l++;
   while(list[r]>=pivot)
    r--;
    if(l<r)
     Swap(ref list[l],ref list[r]);
   }while(l<r);
   list[low]=list[r];
   list[r]=pivot;
   if(low+1<r)
    Sort(list,low,r-1);
   if(r+1<high)
    Sort(list,r+1,high);
  }
 }
 public class MainClass
 {
  public static void Main()
  {
   int[] iArrary=new int[]{1,5,3,6,10,55,9,2,87,12,34,75,33,47};
   QuickSorter q=new QuickSorter();
   q.Sort(iArrary,0,13);
   for(int m=0;m<=13;m++)
    Console.WriteLine("{0}",iArrary[m]); 
  }
 }

}
已经编译通过,运行环境:windows  xp  VC#.net 7.0

作者:顾剑辉

算法系列(四)排序算法中篇--归并排序和快速排序

在算法系列(三)排序算法上篇 一文中,介绍了冒泡排序,插入排序和选择排序算法。这篇文章继续讲解排序算法。 概述 冒泡排序,插入排序和选择排序算法这些算法的时间复杂度都是O(N^2),是否有更高效的排序...
  • robertcpp
  • robertcpp
  • 2016年05月30日 23:04
  • 3383

C#.NET快速排序算法

快速排序,昨天上网找的算法说明,今天用c#给实现的,确实蛮快,嘎嘎简单说明:输入第一个参数是要排序的数组,这里我写的是引用传递,用了ref修饰,其实这里是不是引用传递不是关键,第二个和第三个参数指定要...
  • gaoyunpeng
  • gaoyunpeng
  • 2007年03月01日 17:09
  • 2815

通俗理解四大排序算法

/* 排序:分为内部排序和外部排序 内部排序:处理的所有数据都加载到内部存储器中进行排序(交换式、选择式、插入式) 交换式排序分为:冒泡排序、快速排序 外部排序:数据量过大,无法全部加载到内部...
  • blog_liuliang
  • blog_liuliang
  • 2016年12月11日 15:04
  • 868

啊哈算法-----快速排序

上一节的冒泡排序可以说是我们学习第一个真正的排序算法,并且解决了桶排序浪费空间的问题,但在算法的执行效率上却牺牲了很多,它的时间复杂度达到了O(N2)。假如我们的计算机每秒钟可以运行10亿次,那么对1...
  • binyao02123202
  • binyao02123202
  • 2014年02月27日 14:59
  • 4223

快速排序算法-c#版

大多数程序员在写排序算法的时候,都会采用冒泡算法,为什么了?因为这个算法最简单,最容易理解,也最容易写。 但是,冒泡算法效率并不高,今天就写一个c#的快速排序算法。 废话不多说,先直接上代码: ...
  • mamihong
  • mamihong
  • 2012年12月18日 11:49
  • 3613

快速排序 c#实现

最近的面试都开始问算法的知识了。而算法里最常问到的就是 快速排序的实现 这里说下我的理解,防止以后忘记,如果有错的地方希望各位能指出问题所在。 其实快速排序就是在数组中找一个数来当对比的对象,之后分两...
  • qazqaz12378
  • qazqaz12378
  • 2016年08月11日 16:57
  • 1442

《算法(第四版)》排序-----快速排序

参考文章:   http://ahalei.blog.51cto.com/4767671/1365285 1.概念 快速排序,听这个名字就能想到它排序速度快,它是一种原地排序(只需要一个很小的辅助...
  • kwang0131
  • kwang0131
  • 2016年04月07日 14:33
  • 2706

2、快速排序(QuickSort)-C#实现

最近想学习算法,所以还是从排序算法练练手,这里分析一下快速排序的思想和C#语言实现,若有不正确之处,请批评指正,笔者不胜感激,若有志同道合的朋友,可以加本人QQ:491880231,一起畅谈码农的世界...
  • Chuck_qiang
  • Chuck_qiang
  • 2015年08月05日 23:54
  • 1505

快速排序中的分割算法实现

这里介绍快速排序使用到的两种分割算法。 对于快速排序而言,先选定一个枢轴元素,以枢轴元素为基准比枢轴元素小的元素放在枢轴元素的左边,比枢轴元素大的元素放在枢轴元素的右边。这就是一次分割过程。 1,先介...
  • hapjin
  • hapjin
  • 2015年11月11日 19:38
  • 1358

【算法理解】—— 快速排序(三向切分)

针对于“快速排序”算法的一个介绍,并对快速排序的优化版——“快速排序(三向切分)”做一个介绍。...
  • a8336675
  • a8336675
  • 2016年07月04日 09:49
  • 1425
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C#算法-------(四)快速排序
举报原因:
原因补充:

(最多只允许输入30个字)