1、冒泡排序
1.冒泡排序 将被排序的记录数组R[1..n]垂直排列,每个记录R[i]看作是重量为R[i].key的气泡。根据轻气泡不能在重气泡之下的原则,从下往上扫描数组R:凡扫描到违反本原则的轻气泡,就使其向上"飘浮"(冒泡因此得名)。如此反复进行,直到最后任何两个气泡都是轻者在上,重者在下为止。 下面是种的往下冒泡的例子
class Program
{
/// <summary>
/// 冒泡排序
/// </summary>
/// <param name="numArr"></param>
public void Sort(int[] numArr)
{
int tmpNum;
for (int i = 0; i < numArr.Length;i++ )//最多做numArr.Length-1趟排序
{
for (int j = 0; j < numArr.Length-1;j++ )
{
if (numArr[j]>numArr[j+1])
{
tmpNum = numArr[j];
numArr[j] = numArr[j + 1];
numArr[j + 1] = tmpNum;
}
}
}
}
static void Main(string[] args)
{
int[] Arr = new int[] {3,6,1,9,8,7 };
Program p = new Program();
p.Sort(Arr);
for (int k = 0; k < Arr.Length;k++ )
{
Console.Write("{0} ", Arr[k]);
}
}
}
2、选择排序(Selection Sort)
选择排序的基本思想是:每一趟从待排序的记录中选出关键字最小的记录,顺序放在已排好序的子文件的最后,直到全部记录排序完毕。
/// <summary>
/// 选择排序(Selection Sort)的基本思想是:每一趟从待排序的记录中选出关键字最小的记录,
/// 顺序放在已排好序的子文件的最后,直到全部记录排序完毕。
/// </summary>
/// <param name="numArr"></param>
public void SelectionSort(int[] numArr)
{
int min, tmpNum;
for (int i = 0; i < numArr.Length - 1;i++ )
{
min = i;
for (int j = i + 1; j < numArr.Length;j++ )
{
if (numArr[j] < numArr[min])
{
min = j;
}
}
tmpNum = numArr[i];
numArr[i] = numArr[min];
numArr[min] = tmpNum;
}
}
static void Main(string[] args)
{
int[] Arr = new int[] {3,6,1,9,8,7 };
Program p = new Program();
p.SelectionSort(Arr);
for (int k = 0; k < Arr.Length; k++)
{
Console.Write("{0} ", Arr[k]);
}
}