數(shù)據(jù)結(jié)構(gòu)算法:排序算法集合大全

字號(hào):

基數(shù)排序
    int[] a={1,5,9,7};
    int[] b=new int[10];
    for(int i=0;i  b[a[i]]=1;
    for(int j=0;j    if(b[j]==1)
    Console.WriteLine(j); 結(jié)果:1,5,7,9
    插入排序
    int[] r={12,2,6,65,42};
    for(int i=1;i    { int t;
    t=r[i];
    int j;
    for(j=i-1;j>=0 && r[j]>t;j--)
    {}
    for(int k=i;k>j+1;k--)
    r[k]=r[k-1];
    r[j+1]=t;
    }
    for(int f=0;f    Console.WriteLine(r[f]); 結(jié)果:2,6,12,42,65
    QuickSort快速排序
     static void QuickSort(int[] a,int start,int end)
    { int i=start,j=end;
    int pivot = a[i];
    while(i    { while(i    j--;
    a[i] = a[j];
    while(i    i++;
    a[j]=a[i];
    }
    a[i] = pivot;
    if(i>start)
    QuickSort(a,start,i);
    if(i    QuickSort(a,i+1,end);
    }
    static void Main(string[] args)
    { int[] x={87,56,5,13,5,12,};
    QuickSort(x,0,x.Length-1);
    for(int i=0;i    Console.WriteLine(x[i]);
    } 結(jié)果:5,5,12,13,56,87
    MergeSort 歸并排序
    static void MergeSort(int[] a,int s,int e)
    { if(s>=e) return;
    MergeSort(a,s,(s+e)/2);
    MergeSort(a,(s+e)/2+1,e);
    Merge(a,s,(s+e)/2,e);
    }
    static void Merge(int[] a,int s,int mid, int e)
    { int[] b=new int[a.Length];
    for(int w=0;w   b[w]=a[w];
    int i=s;
    int j=mid+1;
    int k=s;
    while(i<=mid && j<=e)
    { if(b[i]    a[k++] = b[i++];
    else
    a[k++] = b[j++];
    }
    while(i<=mid)
    a[k++] = b[i++];
    while(j<=e)
    a[k++] = b[j++];
    }
    static void Main(string[] args)
    { int[] a={34,2,5,66,87,99};
    MergeSort(a,0,a.Length-1);
    for(int i=0;i  Console.WriteLine(a[i]);
    } 結(jié)果:2,5,34,66,87,99