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 发布