各种排序算法的C#语言实现:
1、冒泡排序
相邻的两个元素相比较,先把最大的移动到最尾端,直到没有需要交换的,说明已经排好序(由小至大排列)
void BubleSort(int[] a,int len)//由小至大排列
{
if (len == 0) return;
for(int i=0 ;i<len-1; i++)
{
for(int j = 0; j < len - i - 1; j++) //已经有i个排好序
{
if (a[j] > a[j+1]) //如果前面的比后面的大,就交换位置,将较大的数移至末尾
{
var temp = a[j+1];
a[j+1] = a[j];
a[j] = temp;
}
}
}
}
2、选择排序
先找出所有未排序中的数值最大的项,然后将最大的项与未排序中的第一项交换位置 (由大至小排列)
选择排序与冒泡排序相比,减少了交换次数。
void SelectSort(int [] a,int len)
{
if(len<=0)
return;
for(int i=0;i<len-1;i++)
{
var maxA=i;
for(int j=i+1;j<len;j++)
{
if(a[j]>a[maxA])
maxA=j;
}
if(maxA!=i)
{ var temp=a[maxA];
a[maxA]=a[i];
a[i]=temp;
}
}
}