C#中使用快速排序按文件创建时间将文件排序的源码
C#中使用快速排序按文件创建时间将文件排序的源码
发布时间:2016-12-28 来源:查字典编辑
摘要:快速排序类usingSystem;usingSystem.Data;usingSystem.Configuration;usingSyste...

快速排序类

usingSystem;

usingSystem.Data;

usingSystem.Configuration;

usingSystem.Web;

usingSystem.Web.Security;

usingSystem.Web.UI;

usingSystem.Web.UI.WebControls;

usingSystem.Web.UI.WebControls.WebParts;

usingSystem.Web.UI.HtmlControls;

usingSystem.IO;

///<summary>

///快速排序算法

///</summary>

publicclassMyQuickSort

{

publicMyQuickSort()

{

//

//TODO:Addconstructorlogichere

//

}

///<summary>

///快速排序算法

///</summary>

///快速排序为不稳定排序,时间复杂度O(nlog2n),为同数量级中最快的排序方法

///<paramname="arr">划分的数组</param>

///<paramname="low">数组低端上标</param>

///<paramname="high">数组高端下标</param>

///<returns></returns>

staticintPartition(FileInfo[]arr,intlow,inthigh)

{

//进行一趟快速排序,返回中心轴记录位置

//arr[0]=arr[low];

FileInfopivot=arr[low];//把中心轴置于arr[0]

while(low<high)

{

while(low<high&&arr[high].CreationTime<=pivot.CreationTime)

--high;

//将比中心轴记录小的移到低端

Swap(refarr[high],refarr[low]);

while(low<high&&arr[low].CreationTime>=pivot.CreationTime)

++low;

Swap(refarr[high],refarr[low]);

//将比中心轴记录大的移到高端

}

arr[low]=pivot;//中心轴移到正确位置

returnlow;//返回中心轴位置

}

staticvoidSwap(refFileInfoi,refFileInfoj)

{

FileInfot;

t=i;

i=j;

j=t;

}

///<summary>

///快速排序算法

///</summary>

///快速排序为不稳定排序,时间复杂度O(nlog2n),为同数量级中最快的排序方法

///<paramname="arr">划分的数组</param>

///<paramname="low">数组低端上标</param>

///<paramname="high">数组高端下标</param>

publicstaticvoidQuickSort(FileInfo[]arr,intlow,inthigh)

{

if(low<=high-1)//当arr[low,high]为空或只一个记录无需排序

{

intpivot=Partition(arr,low,high);

QuickSort(arr,low,pivot-1);

QuickSort(arr,pivot+1,high);

}

}

}

如使用其它排序算法请参考:http://www.yaosansi.com/blog/article.asp?id=980

使用方法:

System.IO.DirectoryInfodir=newDirectoryInfo(currentFolder);

System.IO.FileInfo[]files=dir.GetFiles();

MyQuickSort.QuickSort(files,0,files.Length-1);//按时间排序

使用后:

如果files的长度大于0,那么files[0]为创建时间最新的文件.

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新C#教程学习
热门C#教程学习
编程开发子分类