快速排序/Program.cs

(开头部分) 3KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 快速排序 {
    class Program {
        static void Main(string[] args)
        {
        }
        private static void QuickSortFunction(int[] array, int low, int high)
        {
            try
            {
                int keyValuePosition;   //记录关键值的下标

                //当传递的目标数组含有两个以上的元素时,进行递归调用。(即:当传递的目标数组只含有一个元素时,此趟排序结束)
                if (low < high)
                {
                    keyValuePosition = KeyValuePositionFunction(array, low, high);  //获取关键值的下标(快排的核心)
                    QuickSortFunction(array, low, keyValuePosition - 1);    //递归调用,快排划分出来的左区间
                    QuickSortFunction(array, keyValuePosition + 1, high);   //递归调用,快排划分出来的右区间
                }
            }
            catch (Exception e) { }
        }

        //快速排序的核心部分:确定关键值在数组中的位置,以此将数组划分成左右两区间,关键值游离在外。(返回关键值应在数组中的下标)
        private static int KeyValuePositionFunction(int[] array, int low, int high)
        {
            int leftIndex = low;        //记录目标数组的起始位置(后续动态的左侧下标)
            int rightIndex = high;      //记录目标数组的结束位置(后续动态的右侧下标)

            int keyValue = array[low];  //数组的第一个元素作为关键值
            int temp;

            //当 (左侧动态下标 == 右侧动态下标) 时跳出循环
            while (leftIndex < rightIndex)
            {
                //左侧动态下标逐渐增加,直至找到大于keyValue的下标
                while (leftIndex < rightIndex && array[leftIndex] <= keyValue)
                {
                    leftIndex++;
                }
                //右侧动态下标逐渐减小,直至找到小于或等于keyValue的下标
                while (leftIndex < rightIndex && array[rightIndex] > keyValue)
                {
                    rightIndex--;
                }
                //如果leftIndex < rightIndex,则交换左右动态下标所指定的值;当leftIndex==rightIndex时,跳出整个循环
                if (leftIndex < rightIndex)
                {

                    temp = array[leftIndex];
                    array[leftIndex] = array[rightIndex];
                    array[rightIndex] = temp;
                }
            }

后面还有 19 行代码,解锁后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明

AI 解读 AI

登录后可用,每次 10 算力,解读结果公开显示在下面。

还没有人解读过这个文件。