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]);
}
}
|
本文转自Work Hard Work Smart博客园博客,原文链接:http://www.cnblogs.com/linlf03/archive/2012/02/03/2336691.html,如需转载请自行联系原作者