快速排序

  快速排序在也算是一种常见的比较高效的算法了,它是冒泡排序的升级版。

  具体原理思路:

      1,在数组中找一个数为基准。

      2,定义两个指针从左到右分别与基准做对比,大的数字放右边,小的放左边。

      3,递归实现。

具体实现代码:

 

 //快速排序
        public static void QuickSort(int[] arr,int begin,int end)
        {
            if (begin < end)
            {
                int Mid = arr[begin];//定义一个比较的基准
                int i = begin;//记录开始位置
                int j = end;//记录指针指向的结束
                while (i < j)//判断开始指针和结束指针是否重合
                {
                    //移动指针
                    while (i < j)//
                    {
                        if (arr[j] <= Mid )//如果指针指向的值小于基准值
                        {
                            arr[i] = arr[j];//交换位置
                            break;//跳出循环
                        }
                        else
                        {
                            j--;//移动指针
                        }

                    }
                    while (i < j)
                    {
                        if (arr[i] >= Mid )//指针i指向的值大于基准值
                        {
                            arr[j] = arr[i];//交换位置
                            break;//跳出循环
                        }
                        else
                        {
                            i++;//移动指针
                        }
                    }

                }
                arr[i] = Mid; 将基准值赋值给最后一个位置。
                QuickSort(arr, begin, i - 1); //左递归
                QuickSort(arr, i + 1, end);//右递归
            }
        }
 

 

 
posted @ 2020-06-17 16:50  代码如风~~~  阅读(147)  评论(0编辑  收藏  举报