#region 冒泡排序
static void Main(string[] args)
{
int[] list = new int[] { 1, 90, 23, 54, 12, 59, 59, 95, 76, 83 };
int num = list.Length - 1;
for (int i = 0; i < num; i++)
{
for (int j = 0; j < num - i; j++)
{
if (list[j] > list[j + 1])
{
int temp = list[j];
list[j] = list[j + 1];
list[j + 1] = temp;
}
}
}
for (int i = 0; i < list.Length; i++)
{
Console.WriteLine(list[i]);
}
Console.ReadKey();
}
#endregion
#region 选择排序
public static void Main(string[] args)
{
int[] ints = new[] { 1, 5, 3, 6, 10, 55, 9, 2, 87, 12, 34, 75, 33, 47 };
SortTest st = new SortTest();
st.Sort(ints);
for (int m = 0; m <= 13; m++)
Console.WriteLine("{0}", ints[m]);
}
public class SortTest
{
private int min;
public void Sort(int[] list)
{
for (int i = 0; i < list.Length; ++i)
{
min = i;
for (int j = i + 1; j < list.Length; ++j)
{
if (list[j] < list[min])
min = j;
}
int t = list[min];
list[min] = list[i];
list[i] = t;
}
}
}
#endregion
#region 插入排序
public static void Main(string[] args)
{
int[] iArrary = new int[] { 1, 5, 3, 6, 10, 55, 9, 2, 87, 12, 34, 75, 33, 47 };
SortTest st = new SortTest();
st.Sort(iArrary);
for (int i = 0; i <= 13; i++)
Console.WriteLine("{0}", iArrary[i]);
Console.ReadKey();
}
public class SortTest
{
public void Sort(int[] list)
{
for (int i = 0; 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;
}
}
}
#endregion
#region 希尔排序
public static void Main(string[] args)
{
int[] iArrary = new int[] { 1, 5, 3, 6, 10, 55, 9, 2, 87, 12, 34, 75, 33, 47 };
SortTest st = new SortTest();
st.Sort(iArrary);
for (int i = 0; i <= 13; i++)
Console.WriteLine("{0}", iArrary[i]);
Console.ReadKey();
}
public class SortTest
{
public void Sort(int[] list)
{
int inc;
for (inc = 1; inc < list.Length / 9; inc = 3 * inc + 1) ;
for (; inc > 0; inc /= 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;
}
}
}
}
#endregion