C#中使用快速排序按文件创建时间将文件排序的源码_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 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]为创建时间最新的文件.

时间: 2024-10-02 09:20:19

C#中使用快速排序按文件创建时间将文件排序的源码_C#教程的相关文章

C#中字符串的加密的源码_C#教程

可以用DSA和RSA,如: using System; using System.Text; using System.Security.Cryptography; class dsacrypto_SignData { public static void Main(String[] args){ //先要将字符串转换为字节数组,这与编码有关. String str = "this is a test."; byte[] bytes = Encoding.ASCII.GetBytes(

Android源码浅析(四)——我在Android开发中常用到的adb命令,Linux命令,源码编译命令

Android源码浅析(四)--我在Android开发中常用到的adb命令,Linux命令,源码编译命令 我自己平时开发的时候积累的一些命令,希望对你有所帮助 adb是什么?: adb的全称为Android Debug Bridge,就是起到调试桥的作用.通过adb我们可以在IDE中调试Android程序,说白了就是debug工具.adb的工作方式比较特殊,采用监听Socket TCP 5554等端口的方式让IDE和Qemu通讯,默认情况下adb会daemon相关的网络端口,所以当我们运行And

详解Android中用于线程处理的AsyncTask类的用法及源码_Android

为什么要用AsyncTask我们写App都有一个原则,主线程不能够运行需要占用大量CPU时间片的任务,如大量复杂的浮点运算,较大的磁盘IO操作,网络socket等,这些都会导致我们的主线程对用户的响应变得迟钝,甚至ANR,这些会使应用的用户体验变差,但是有时又的确需要执行这些耗时的任务,那么我们通常可以使用AsyncTask或者new Thread 来处理,这样把任务放入工作线程中执行,不会占用主线程的时间片,所以主线程会及时响应用户的操作,如果使用new Thread来执行任务,那么如果需要中

详细分析Android中实现Zygote的源码_C 语言

概述 在Android系统中,所有的应用程序进程,以及用来运行系统关键服务的System进程都是由zygote进程负责创建的.因此,我们将它称为进程孵化器.zygote进程是通过复制自身的方式来创建System进程和应用程序进程的.由于zygote进程在启动时会在内部创建一个虚拟机实例,因此,通过复制zygote进程而得到的System进程和应用程序进程可以快速地在内部获得一个虚拟机实例拷贝. zygote进程在启动完成之后,会马上将System进程启动起来,以便它可以将系统的关键服务启动起来.

在Intellij IDEA 中自动加载Maven管理的依赖包的源码

如果你的项目不是用 Maven 管理的,可以在项目依赖的Libraries下手工添加依赖包对应的源码jar文件路径, 方法可以参考此文: https://yq.aliyun.com/articles/72560 但如果你是用 Maven 来管理项目,就不用怎么麻烦了,只需要在 Intellij IDEA 中设置一下即可. 设置方法如下: 一.打开 File -> Settings 窗口,然后在左边选择 Build, Execution, Deployment -> Build Tools -&

详解Android中用于线程处理的AsyncTask类的用法及源码

为什么要用AsyncTask 我们写App都有一个原则,主线程不能够运行需要占用大量CPU时间片的任务,如大量复杂的浮点运算,较大的磁盘IO操作,网络socket等,这些都会导致我们的主线程对用户的响应变得迟钝,甚至ANR,这些会使应用的用户体验变差,但是有时又的确需要执行这些耗时的任务,那么我们通常可以使用AsyncTask或者new Thread 来处理,这样把任务放入工作线程中执行,不会占用主线程的时间片,所以主线程会及时响应用户的操作,如果使用new Thread来执行任务,那么如果需要

Android中实现地址栏输入网址能浏览该地址网页源码并操作访问网络_Android

 首先实现简单布局: 复制代码 代码如下: <EditText android:id="@+id/et_url" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentRight="true&q

纯干货 | 机器学习中梯度下降法的分类及对比分析(附源码)

更多深度文章,请关注:https://yq.aliyun.com/cloud HackerEarth,一家来自印度的创业公司,旨在帮助开发者通过线上编程竞赛获得工作机会.和Github类似,它提供一个多种编程语言的代码交流平台.而HackerEarth blog 上多刊登一些跟大数据.人工智能.机器学习.算法及编程竞赛相关的博文. 引言       梯度下降法 (Gradient Descent Algorithm,GD) 是为目标函数J(θ),如代价函数(cost function), 求解全

浅谈c#.net中巧用ToString()将日期转成想要的格式_C#教程

C#时间/日期格式大全,C#时间/日期函数大全 有时候我们要对时间进行转换,达到不同的显示效果 默认格式为:2005-6-6 14:33:34 如果要换成成200506,06-2005,2005-6-6或更多的该怎么办呢? 我们要用到: 复制代码 代码如下: DateTime.ToString的方法(String, IFormatProvider) using System; using System.Globalization; String format="D"; DateTime