namespace 排序11_13
{
class Program
{
static int temp = 0;
static void Main(string[] args)
{
int[] arr = { 22, 60, 30, 40, 66, 99, 88, 77 ,100,77};
//InsertSort(arr);
QuickSort(arr,0,arr.Length-1);
// BubbleSort(arr);
for (int i = 0; i < arr.Length; i++)
{
Console.Write(arr[i]+"\t");
}
}
/// <summary>
/// 冒泡排序
/// </summary>
/// <param name="arr">要排序的数组</param>
public static void BubbleSort(int[] arr)
{
for (int i = 0; i < arr.Length; i++)
{
for (int j = 0; j < arr.Length - i - 1; j++)
{
if (arr[j] > arr[j + 1])//相邻两个值进行比较,把较大的数放到最前面
{
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
/// <summary>
/// 选择排序
/// </summary>
/// <param name="arr">要排序的数组</param>
public static void SelectSort(int[] arr)
{
for (int i = 0; i < arr.Length; i++)
{
int maxNumber = arr[i];//定义擂主数
for (int j = i; j < arr.Length; j++)//每过一次循环,前一个数一定比后面的所有的数大,所以循环从i个元素开始。
{
if (arr[i] > arr[j])//擂主数与攻擂数比较,如果获胜胜者与擂主数交换,成为新擂主数
{
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
/// <summary>
/// 插入排序
/// </summary>
/// <param name="arr">要排序的数组</param>
public static void InsertSort(int[] arr)
{
for (int i = 1; i < arr.Length; i++) //这个数与前一个数比交,所以从第二个数开始循环
{
if (arr[i] < arr[i - 1]) //判断大小,决定是否需要交换
{
int temp = arr[i]; //如果需要交换,则将待排序记录放入临时变量中
int j = 0;
for (j = i - 1; j >= 0 && temp < arr[j]; j--) //在有序序列中从后往前比较,找到待排序记录在有序列中位置(位置空出)
{
arr[j + 1] = arr[j]; //将有序记录往后移
}
arr[j + 1] = temp; //将临时变量中的值放入正确位置,即空出的位置
}
}
}
/// <summary>
/// 快速排序
/// </summary>
/// <param name="arry">要排序的数组</param>
/// <param name="left">低位</param>
/// <param name="right">高位</param>
public static void QuickSort( int[] arr,int left,int right)
{
//左边索引小于右边,则还未排序完成
if (left < right)
{
//取中间的元素作为比较基准,小于他的往左边移,大于他的往右边移
int middle = arr[(left + right) / 2];
int i = left - 1;
int j = right + 1;
while (true)
{
//移动下标,左边的往右移动,右边的向左移动
while (arr[++i] < middle && i < right);
while (arr[--j] > middle && j > 0);
if (i >= j)
break;
//交换位置
int number = arr[i];
arr[i] = arr[j];
arr[j] = number;
}
QuickSort(arr, left, i - 1);
QuickSort(arr, j + 1, right);
}
}
}
}
C#超基础:排序算法
最新推荐文章于 2023-10-10 10:55:58 发布