快速排序算法(c#)实现
来源:互联网 发布:淘宝骗 编辑:程序博客网 时间:2024/04/29 10:18
namespace BackPackProblem{ class Program { static void Main(string[] args) { int[] profit = { 3, 2, 7, 1, 4 }; BackPack _bp = new BackPack(profit); int start = 0; int end = profit.Length - 1; _bp.quickSort(profit, start, end); _bp.print(); } } class BackPack { private int[] profit; public BackPack(int[] _profit) { this.profit = _profit; } //快速排序:一次划分算法 public int partiton(int[] array,int _start,int _end) { int start = _start; int end = _end; while (start < end) { while ((start < end) && (array[start] > array[end])) { end--; } if (start < end) { int temp = array[start]; array[start] = array[end]; array[end] = temp; start++; } while ((start < end) && (array[start]>array[end])) { start++; } if (start < end) { int temp = array[start]; array[start] = array[end]; array[end] = temp; end--; } } return start; } //用快速排序法:实现对数组从大到下的排序 public void quickSort(int[] array,int start,int end) { if (start < end) { int pivot = partiton(array, start, end); quickSort(array, start, pivot - 1); quickSort(array, pivot + 1, end); } } public void print() { for (int i = 0; i < profit.Length; i++) Console.Write(profit[i] + " "); Console.WriteLine(); } }}