冒泡排序:
public void Sort(int[] list)
{
int i, j, temp;
bool done = false;
j = 1;
while ((j < list.Length) && (!done))
{
done = true;
for (i = 0; i < list.Length - j; i++)
{
if (list[i] > list[i + 1])
{
done = false;
temp = list[i];
list[i] = list[i + 1];
list[i + 1] = temp;
}
}
j++;
}
}
选择排序:
public void Sort(int[] list)
{
int min;
for (int i = 0; i < list.Length - 1; ++i)
{
min = i;
for (int j = i + 1; j < list.Length; ++j)
{
if (list[j] < list[min])
min = j;// min就是剩下元素中最小的那个的索引值
}
// 交换最小值和当前值,达到从小到大的要求
int t = list[min];
list[min] = list[i];
list[i] = t;
}
}
插入排序:
public void Sort(int[] list)
{
for (int i = 1; i < list.Length; ++i)
{
int t = list[i];
int j = i;
// 寻找插入点,从后往前把插入点后的元素后移
while ((j > 0) && (list[j - 1] > t))
{
list[j] = list[j - 1];
--j;
}
list[j] = t;
}
}
希尔排序:
public void Sort(int[] list)
{
int inc;
// 确定合适的间隔
for(inc = 1; inc <= list.Length/9; inc = 3*inc+1);
for( ; inc > 0; inc /= 3) // 每次间隔缩短2/3
{
for( int i = inc + 1; i <= list.Length; i += inc )
{
int t = list[i-1];
int j = i;
// 插入排序
while( ( j > inc ) && ( list[j - inc - 1] > t ) )
{
list[j-1] = list[j - inc - 1];
j -= inc;
}
list[j-1] = t;
}
}
}
主函数:
static void Main(string[] args)
{
int[] iArrary = new int[] { 1, 5, 13, 6, 10, 55, 99, 2, 87, 12, 34, 75, 33, 47 };
Sort(iArrary);
for (int m = 0; m < iArrary.Length; m++)
Console.Write("{0} ", iArrary[m]);
Console.WriteLine();
}