快速排序法:找到一个基准点key,和left,right,比较,比key小的值放到key的坐边,比key大的值,放到key的右边。
采用递归方式,重复执行判断,直到排序完成。
//快速排序法法
- //排序找出基准点。
- private static int SortID (int[] arr, int left, int right)
- {
- int key = arr [left];
- while (left < right) {
- while (arr [right] >= key && right > left) {//比key小放左边
- right--;
- }
- arr [left] = arr [right];
- while (arr [left] <= key && left < right) {//比key大放右边
- left++;
- }
- arr [right] = arr [left];
- }
- arr [left] = key;
- foreach (var i in arr) {
- Console.Write (i + " ");
- }
- Console.WriteLine ();
- return left;
- }
- private static void Sort (int[] arr, int left, int right)
- {
- if (left < right) {
- int i = SortID (arr, left, right);//基准点
- Sort (arr, left, i - 1);//左区间
- Sort (arr, i + 1, right);//右区间
- }
- }