收录日期:2020/12/02 11:01:33 时间:2016/05/24 05:40:18 标签:C#
//請各位大蝦們幫我看看下面這段代碼,到底是哪兒不對呀????為什麼結果不對?
//小弟初學C#,請大蝦們幫幫小弟.Waiting for you........
//Procedure:   Sort   --    數組排序(快速排序法)
//Parameters:  array  --  數組; min -- 最小索引; max -- 最大索引
//Return;      None

public static void Sort(ref long[] array,int min,int max,ref long step)
{
         long Med_Value;
long count=0;
int Right;
int Left;
//分割點位置
int i=(array.Length/2);

//如果數據序列的數據個數不超過1則退出
if (min<max)
{
          try
{
Med_Value=array[i];

//將序列的第一項移到分割點
array[i]=array[min];

      //將小於分割點的數據移到左側其他的移到右側,直到完成分成小於
      //分割點值的數據和大於等於分割點的數據兩個子序列
Left=min;
Right=max;
while (true)
{
//從前向後掃描,尋找小於分割點數值的數據
while (array[Right]>=Med_Value)
{
Right-=1;
count+=1;
if (Right<=Left) break;
}
if (Right<=Left)
{
array[Left]=Med_Value; //將放置分割點的值放回到序列中
break;
}

//將找到的數據放在左邊
array[Left]=array[Right];

//從前向後掃描,尋找大於分割點數值的數據
Left+=1;
while (array[Left]<Med_Value) 
{
Left+=1;
count+=1;
if (Left>=Right) break;
}
if (Left>=Right)
{
Left=Right;
array[Right]=Med_Value; //將放置分割點的值放回到序列中
break;
}

//將找到的數據放在右邊,靠近其他已掃描過的大於等於分割點數值的數據
array[Right]=array[Left];
}

//排序兩個子序列
Sort(ref array,min,Left-1,ref step);
Sort(ref array,Left+1,max,ref step);
}
catch(Exception e)
{
Console.WriteLine(e.Message);
}
}
step+=count;
}

求助 笔记本鼠标自由移动 宏问题 中毒了,baster.txt在安全模式下也删不掉,高手请指教 串口数据处理 问Myeclipse控制面板问题 在vb.net中我要计算x的1.48次方应该用那个函数? 下了N个都不能接收邮件,谁给我一个可以用的jmail4.4pro(mail:by_cap@163.com) !!!高手进!!!在mainframe中获得视图指针老是报错 IIS无法启动 VC里用哪个API可以遍历获得某一目录下所有文件名字符串? struts的学习 请求帮助 如何提取txt文件中的内容 学习Ajax首先应该先学什么?我css,js都不太会,是不是先学这两个`~?? 一个JavaScript去空格的问题 关于数组的问题,求解!! 求同两张表4个结果集的横向连接 《自己动手写操作系统》中的一个子过程,大家来帮忙解释一下! CListCtrl显示不正常(分怎么没了。。 ) 初学者请教switch的用法,为什么提示出错,谢谢回答帮助我. 如何提取以下格式的txt文件中的数据,那位大侠能帮帮忙. 怎么将字节数组转换成十六进制字符串 这样功能的代码应该怎么写 从cfiledialog派生过来的类,怎么没有构造函数和析构函数 Session方便吗? 请教boa问题 求<<操作系统:设计与实现>>第二版中文版下册电子书 win32API 与 DirectX是什么关系! 请教关于验证 頁面傳送參數問題