基数排序
int[] a={1,5,9,7};
int[] b=new int[10];
for(int i=0;i<a.Length;i++)
b[a[i]]=1;
for(int j=0;j<b.Length;j++)
if(b[j]==1)
Console.WriteLine(j); 结果:1,5,7,9
插入排序 int[] r={12,2,6,65,42};
for(int i=1;i<r.Length;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<r.Length;f++)
Console.WriteLine(r[f]); 结果: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<j)
{ while(i<j && pivot<=a[j])
j--;
a[i] = a[j];
while(i<j && a[i]<=pivot)
i++;
a[j]=a[i];
}
a[i] = pivot;
if(i>start)
QuickSort(a,start,i);
if(i<end)
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<x.Length;i++)
Console.WriteLine(x[i]);
} 结果: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<a.Length;w++)
b[w]=a[w];
int i=s;
int j=mid+1;
int k=s;
while(i<=mid && j<=e)
{ if(b[i]<b[j])
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<a.Length;i++)
Console.WriteLine(a[i]);
} 结果:2,5,34,66,87,99
责任编辑:小草