排序算法
Posted Hi,程序員
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了排序算法相关的知识,希望对你有一定的参考价值。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Sort { class Program { /// <summary> /// 排序算法 /// </summary> /// <param name="args"></param> static void Main(string[] args) { int[] arr = { 0, 5, 7, 6, 2, 9 }; bubbleSort(arr); //quickSort(arr); //insertSort(arr); foreach (var a in arr) { Console.Write(a + ","); } Console.ReadKey(); } /// <summary> /// 冒泡排序:比较两个相邻元素的大小 /// </summary> /// <param name="arr"></param> public static void bubbleSort(int[] arr) { for (int i = 0; i < arr.Length; i++) { for (int j = 1; j < arr.Length - i - 1; j++) { if (arr[j] < arr[j - 1]) { arr[j] = arr[j] + arr[j - 1]; arr[j - 1] = arr[j] - arr[j - 1]; arr[j] = arr[j] - arr[j - 1]; } } } } /// <summary> /// 快速排序(选择排序):每趟选一个min值 /// </summary> /// <param name="arr"></param> public static void quickSort(int[] arr) { for (int i = 0; i < arr.Length; i++) { int min = i; for (int j = i + 1; j < arr.Length; j++) //每趟都选出一个最小值,所以到i之前的都已经排好序 { if (arr[min] > arr[j]) { min = j; //内层循环只需要拿到最小值的下标 } } if (arr[i] != arr[min]) { arr[i] = arr[i] + arr[min]; arr[min] = arr[i] - arr[min]; arr[i]= arr[i] - arr[min]; } } } /// <summary> /// 直接插入排序:每一步将一个待排序的记录,插入到前面已经排好序的有序序列中去,直到插完所有元素为止。 /// </summary> /// <param name="arr"></param> public static void insertSort(int[] arr) { for (int i = 0; i < arr.Length; i++) { for (int j = i; j >0; j--) { if (arr[j] < arr[j - 1]) { int temp = arr[j]; arr[j] = arr[j - 1]; arr[j - 1] = temp; } } } } } }
以上是关于排序算法的主要内容,如果未能解决你的问题,请参考以下文章