什么';s是对数组进行排序最快的一种

本文关键字:一种 排序 数组 什么 | 更新日期: 2023-09-27 18:24:11

我使用选择排序,但我想要一个比这更好的排序解决方案:

    static void SelectionSort(int[] a)
    {
        int temp, pmin;
        for (int i=0; i<a.Length-1; i++)
        {
            pmin=i;
            for (int j=i+1; j<a.Length; j++)
            if (a[j]<a[pmin])
                pmin=j;
            temp = a[i];
            a[i] = a[pmin];
            a[pmin] = temp;
        }
    }

什么';s是对数组进行排序最快的一种

只需使用:

Array.Sort(a);

这将进行快速排序。

如果您查看维基百科,就其空间和时间复杂性而言,可以很好地比较不同的排序算法。许多是n lg nn的平均时间,应该很适合您的需求。

此外,.NET还内置了几种排序算法。包括Array.Sort()和List.Sort()

在linq 中使用Array.Sort(a)orderby

排序算法没有绝对的赢家。效率取决于阵列的大小、内容和状态只知道什么对你最好。

看看这里的例子和衡量标准。

只需使用Array:Array.Sort(a) 中的内置函数

要获得最快的排序算法,您应该使用heap sort。与所有其他排序算法相比,它的时间复杂度最低

A program to implement Heap Sort
#include<stdio.h>
void restoreHup(int*,int);
void restoreHdown(int*,int,int);
void main()
{
    int a[20],n,i,j,k;
    printf("   Enter the number of elements to sort : ");
    scanf("%d",&n);
    printf("Enter the elements : ");
    for(i=1;i<=n;i++){
            scanf("%d",&a[i]);
            restoreHup(a,i);
    }

    j=n;
    for(i=1;i<=j;i++)
    {
            int temp;
            temp=a[1];
            a[1]=a[n];
            a[n]=temp;
            n--;
            restoreHdown(a,1,n);
    }
    n=j;
    printf("Here is it...");
    for(i=1;i<=n;i++)
            printf("%4d",a[i]);
    }

    void restoreHup(int *a,int i)
    {
     int v=a[i];
     while((i>1)&&(a[i/2]<v))
     {
            a[i]=a[i/2];
            i=i/2;
     }
     a[i]=v;
    }
    void restoreHdown(int *a,int i,int n)
   {
    int v=a[i];
    int j=i*2;
    while(j<=n)
    {
            if((j<n)&&(a[j]<a[j+1]))
                    j++;
            if(a[j]<a[j/2]) break;
            a[j/2]=a[j];
            j=j*2;
    }
    a[j/2]=v;
   }
相关文章: