C# 经典排序算法大全
C# 经典排序算法大全
选择排序
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace sorter { public class SelectionSorter { private int min; public void Sort(int[] arr) { for (int i = 0; i < arr.Length - 1; ++i) { min = i; for (int j = i + 1; j < arr.Length; ++j) { if (arr[j] < arr[min]) { min = j; } } int t = arr[min]; arr[min] = arr[i]; arr[i] = t; } } } class Program { static void Main(string[] args) { int[] arrInt = new int[] { 4, 2, 7, 1, 8, 3, 9, 0, 5, 6 }; SelectionSorter selSor = new SelectionSorter(); selSor.Sort(arrInt); foreach (int i in arrInt) { Console.WriteLine(i); } Console.ReadKey(); } } }
冒泡排序
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace sorter { public class EbullitionSorter { public void Sort(int[] arr) { int i, j, temp; bool done = false; j = 1; while ((j < arr.Length) && (!done)) // 判断长度 { done = true; for (i = 0; i < arr.Length - j; i++) { if (arr[i] > arr[i + 1]) { done = false; temp = arr[i]; arr[i] = arr[i + 1]; // 交换数据 arr[i + 1] = temp; } } j++; } } } class Program { static void Main(string[] args) { int[] arrInt = new int[] { 4, 2, 7, 1, 8, 3, 9, 0, 5, 6 }; EbullitionSorter selSor = new EbullitionSorter(); selSor.Sort(arrInt); foreach (int i in arrInt) { Console.WriteLine(i); } Console.ReadKey(); } } }
快速排序
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace sorter { public class QuickSorter { private void swap(ref int l, ref int r) { int temp; temp = l; l = r; r = temp; } public void Sort(int[] list, int low, int high) { int pivot; // 存储分支点 int l, r; int mid; if (high <= low) { return; } else if (high == low + 1) { if (list[low] > list[high]) { swap(ref list[low], ref list[high]); } return; } mid = (low + high) >> 1; pivot = list[mid]; swap(ref list[low], ref list[mid]); l = low + 1; r = high; do { while (l <= r && list[l] < pivot) { l++; } while (list[r] >= pivot) { r--; } if (l < r) { swap(ref list[l], ref list[r]); } } while (l < r); list[low] = list[r]; list[r] = pivot; if (low + 1 < r) { Sort(list, low, r - 1); } if (r + 1 < high) { Sort(list, r + 1, high); } } } class Program { static void Main(string[] args) { int[] arrInt = new int[] { 4, 2, 7, 1, 8, 3, 9, 0, 5, 6 }; QuickSorter selSor = new QuickSorter(); selSor.Sort(arrInt, 0, arrInt.Length - 1); foreach (int i in arrInt) { Console.WriteLine(i); } Console.ReadKey(); } } }
插入排序
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace sorter { public class InsertionSorter { public void Sort(int[] arr) { for (int i = 1; i < arr.Length; i++) { int t = arr[i]; int j = i; while ((j > 0) && (arr[j - 1] > t)) { arr[j] = arr[j - 1]; // 交换顺序 --j; } arr[j] = t; } } } class Program { static void Main(string[] args) { int[] arrInt = new int[] { 4, 2, 7, 1, 8, 3, 9, 0, 5, 6 }; InsertionSorter selSor = new InsertionSorter(); selSor.Sort(arrInt); foreach (int i in arrInt) { Console.WriteLine(i); } Console.ReadKey(); } } }
希尔排序
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace sorter { public class ShellSorter { public void Sort(int[] arr) { int inc; for (inc = 1; inc <= arr.Length / 9; inc = 3 * inc + 1) ; for (; inc > 0; inc /= 3) { for (int i = inc + 1; i <= arr.Length; i += inc) { int t = arr[i - 1]; int j = i; while ((j > inc) && (arr[j - inc - 1] > t)) { arr[j - 1] = arr[j - inc - 1]; // 交换数据 j -= inc; } arr[j - 1] = t; } } } } class Program { static void Main(string[] args) { int[] arrInt = new int[] { 4, 2, 7, 1, 8, 3, 9, 0, 5, 6 }; ShellSorter selSor = new ShellSorter(); selSor.Sort(arrInt); foreach (int i in arrInt) { Console.WriteLine(i); } Console.ReadKey(); } } }
归并排序
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。