c# 冒泡,插入,快速排序,和二分查找
class Program
{
static void Main(string[] args)
{
int[] array = { 8, 5, 45, 56, 65, 55, 494, 5, 53, 78, 47 };
//MaoPaoSort(array);
KuaiShuSort2(array);
//ChaRuSort(array);
PrintArray(array);
Console.Read();
}
/// <summary>
/// 冒泡排序
/// </summary>
/// <param name="array"></param>
static void MaoPaoSort(int[] array)
{
for (int i = 0; i < array.Length-1; i++)
{
for (int j = 0; j < array.Length-1-i; j++)
{
if (array[j] > array[j+1])
{
int number = array[j];
array[j] = array[j + 1];
array[j + 1] = number;
}
}
}
}
/// <summary>
/// 快速排序1
/// </summary>
/// <param name="array"></param>
static void KuaiShuSort(int[] array)
{
for (int i = 0; i < array.Length-1; i++)
{
for (int j = 0; j < array.Length - 1 - i; j++)
{
if (array[array.Length - 1 -i] < array[j])
{
int b = array[array.Length - 1 - i];
array[array.Length - 1 - i] = array[j];
array[j] = b;
}
}
}
}
/// <summary>
/// 快速排序2
/// </summary>
/// <param name="array"></param>
static void KuaiShuSort2(int[] array)
{
for (int i = 0; i < array.Length - 1; i++)
{
int MaxIndex = array.Length - 1 - i;
for (int j = 0; j < array.Length - 1 - i; j++)
{
if (array[MaxIndex] < array[j])
{
MaxIndex = j;
}
}
int b = array[array.Length - 1 - i];
array[array.Length - 1 - i] = array[MaxIndex];
array[MaxIndex] = b;
}
}
/// <summary>
/// 插入排序
/// </summary>
/// <param name="array"></param>
static void ChaRuSort(int[] array)
{
for (int i = 1; i < array.Length - 1; i++)
{
for (int j = i; j >= 0; j --)
{
if (array[j + 1] < array[j])
{
int b = array[j];
array[j] = array[j+1];
array[j + 1] = b;
}
else
{
break;
}
}
}
}
/// <summary>
/// 二分查找
/// </summary>
/// <param name="arr"></param>
/// <param name="low">開始索引 0</param>
/// <param name="high">結束索引 </param>
/// <param name="key">要查找的對象</param>
/// <returns></returns>
public static int BinarySearch(int[] arr, int low, int high, int key)
{
int mid = (low + high) / 2;
if (low > high)
{
return -1;
}
else
{
if (arr[mid] == key)
return mid;
else if (arr[mid] > key)
return BinarySearch(arr, low, mid - 1, key);
else
return BinarySearch(arr, mid + 1, high, key);
}
}
/// <summary>
/// 打印數組
/// </summary>
/// <param name="array"></param>
static void PrintArray(int[] array)
{
for (int i = 0; i < array.Length; i++)
{
Console.WriteLine("arrray[{0}] = " + array[i], i);
}
}
}