C#中使用快速排序按文件创建时间将文件排序的源码

所属分类: 软件编程 / C#教程 阅读数: 126
收藏 0 赞 0 分享
快速排序类
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 System.IO;
/// <summary>
/// 快速排序算法
/// </summary>
public class MyQuickSort
{
    public MyQuickSort()
 {
  //
  // TODO: Add constructor logic here
  //
 }

    /// <summary>
    /// 快速排序算法
    /// </summary>
    /// 快速排序为不稳定排序,时间复杂度O(nlog2n),为同数量级中最快的排序方法
    /// <param name="arr">划分的数组</param>
    /// <param name="low">数组低端上标</param>
    /// <param name="high">数组高端下标</param>
    /// <returns></returns>
    static int Partition(FileInfo[] arr, int low, int high)
    {
        //进行一趟快速排序,返回中心轴记录位置
        // arr[0] = arr[low];
        FileInfo pivot = arr[low];//把中心轴置于arr[0]
        while (low < high)
        {
            while (low < high && arr[high].CreationTime <= pivot.CreationTime)
                --high;
            //将比中心轴记录小的移到低端
            Swap(ref arr[high], ref arr[low]);
            while (low < high && arr[low].CreationTime >= pivot.CreationTime)
                ++low;
            Swap(ref arr[high], ref arr[low]);
            //将比中心轴记录大的移到高端
        }
        arr[low] = pivot; //中心轴移到正确位置
        return low;  //返回中心轴位置
    }
    static void Swap(ref FileInfo i, ref FileInfo j)
    {
        FileInfo t;
        t = i;
        i = j;
        j = t;
    }
    /// <summary>
    /// 快速排序算法
    /// </summary>
    /// 快速排序为不稳定排序,时间复杂度O(nlog2n),为同数量级中最快的排序方法
    /// <param name="arr">划分的数组</param>
    /// <param name="low">数组低端上标</param>
    /// <param name="high">数组高端下标</param>
    public static void QuickSort(FileInfo[] arr, int low, int high)
    {
        if (low <= high - 1)//当 arr[low,high]为空或只一个记录无需排序
        {
            int pivot = 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.DirectoryInfo dir = new DirectoryInfo(currentFolder);
 System.IO.FileInfo[] files = dir.GetFiles();
MyQuickSort.QuickSort(files, 0, files.Length - 1);//按时间排序
使用后:
 如果files的长度大于0,那么files[0]为创建时间最新的文件.
更多精彩内容其他人还在看

C#实现写系统日志的方法

这篇文章主要介绍了C#实现写系统日志的方法,涉及C#针对系统日志的创建、写入及删除等技巧,非常具有实用价值,需要的朋友可以参考下
收藏 0 赞 0 分享

C#编程实现自定义热键的方法

这篇文章主要介绍了C#编程实现自定义热键的方法,涉及C#键盘按键设置的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

C#实现读取被进程占用的文件实现方法

这篇文章主要介绍了C#实现读取被进程占用的文件实现方法,涉及C#进程操作及文件读取的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

C#获取任务栏显示进程的方法

这篇文章主要介绍了C#获取任务栏显示进程的方法,涉及C#针对进程操作的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

C#调用dos窗口获取相关信息的方法

这篇文章主要介绍了C#调用dos窗口获取相关信息的方法,涉及C#调用dos窗口及进程操作的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

C#通过Semaphore类控制线程队列的方法

这篇文章主要介绍了C#通过Semaphore类控制线程队列的方法,涉及Semaphore类操作线程队列的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

C#使用Dispose模式实现手动对资源的释放

这篇文章主要介绍了C#使用Dispose模式实现手动对资源的释放,涉及C#采用Dispose模式操作资源的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

C#动态创建button的方法

这篇文章主要介绍了C#动态创建button的方法,涉及C#按钮属性动态设置的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

C#编程获取资源文件中图片的方法

这篇文章主要介绍了C#编程获取资源文件中图片的方法,涉及C#针对项目中资源文件操作的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

WinForm实现窗体最大化并遮盖任务栏的方法

这篇文章主要介绍了WinForm实现窗体最大化并遮盖任务栏的方法,涉及C#实现WinForm窗体全屏显示的实现及调用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多