冒泡排序:
static void Main(string[] args)
{
/*
* 冒泡排序
* 输入: 9,2,6,4,67,23,1,4,30
* 输出:1,2,4,4,6,9,23,30,67
* */
//升序
int[] array = new int[] { 9, 2, 6, 4, 67, 23, 1, 4, 30 };
for(int i = 0; i < array.Length - 1; i++)
{
for(int j = 0; j < array.Length - i - 1; j++)
{
if(array[j] > array[j + 1])
{
int temp = array[j + 1];
array[j + 1] = array[j];
array[j] = temp;
}
}
}
//输出
Console.Write("Ascending sorted array is: ");
for(int i = 0; i < array.Length; i++)
{
Console.Write("{0},",array[i]);
}
}
插入排序:
static void Main(string[] args)
{
/*
* 插入排序
* 输入: 9,2,6,4,67,23,1,4,30
* 输出:1,2,4,4,6,9,23,30,67
* */
//升序
int[] array = new int[] { 9, 2, 6, 4, 67, 23, 1, 4, 30 };
for(int i = 1; i < array.Length; i++)
{
int key = array[i];
int j = i - 1;
while(j >= 0 && key < array[j])
{
array[j + 1] = array[j];
j--;
}
array[j + 1] = key;
}
//输出
Console.Write("Ascending sorted array is: ");
for(int i = 0; i < array.Length; i++)
{
Console.Write("{0},",array[i]);
}
}
快速排序:
static Int64 steps = 0;
static void Main(string[] args)
{
/*
* 快速排序
* 输入: 9,2,6,4,67,23,1,4,30
* 输出:1,2,4,4,6,9,23,30,67
* */
//升序
int[] array = new int[] { 9, 2, 6, 4, 67, 23, 1, 4, 30 };
FastSorting(array, 0, array.Length-1);
//输出
Console.Write("Ascending sorted array is: ");
for (int i = 0; i < array.Length; i++)
{
Console.Write("{0},", array[i]);
}
Console.Write(" Total steps is:{0} \r\n", steps);
}
static void FastSorting(int[] array, int start, int end)
{
if(start < end)
{
int mid = start + (end - start) / 2;
for(int i = mid + 1; i <= end; i++)
{
steps++;
if(array[mid] >= array[i])
{
int temp = array[mid];
array[mid] = array[i];
array[i] = array[mid + 1];
array[mid + 1] = temp;
mid++;
}
}
for(int i = mid - 1; i >= start; i--)
{
steps++;
if(array[mid] <= array[i])
{
int temp = array[mid];
array[mid] = array[i];
array[i] = array[mid -1];
array[mid -1] = temp;
mid--;
}
}
FastSorting(array, mid + 1, end);
FastSorting(array, start, mid - 1);
}
}