zoukankan      html  css  js  c++  java
  • 快速排序

    基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

    界面:

    主要代码:

    //将原问题分解为若干个规模更小但结构与原问题相似的子问题。
            //递归地解这些子问题,然后将这些子问题的解组合为原问题的解。
            private void btnSort_Click(object sender, EventArgs e)
            {
                try
                {
                    string beforeSort = txtBeforeSort.Text.ToString();
                    string[] sortArr = beforeSort.Split('*');
                    List<int> beforeArr = new List<int>();
                    foreach (string str in sortArr)
                    {
                        int num = int.Parse(str);
                        beforeArr.Add(num);
                    }
    
                    QuickSort(beforeArr, 0, beforeArr.Count - 1);
    
                    string afterStr = "";
                    foreach (int i in beforeArr)
                    {
                        afterStr += i.ToString() + "*";
                    }
                    txtAfterSort.Text = afterStr.Substring(0, afterStr.Length - 1);
                }
                catch (Exception ex)
                {
     
                }
            }
            private void QuickSort(List<int> arr,int left,int right)
            {
                if (left < right)
                {
                    int p = GetLocation(arr, left, right);
                    QuickSort(arr, left, p - 1);
                    QuickSort(arr, p + 1, right);
                }
            }
            private int GetLocation(List<int> arr, int left, int aim)
            {
                int beginI = left - 1;
                int beginJ = left;
                while (beginJ < arr.Count)
                {
    
                    if (beginJ == arr.Count - 1)
                    {
                        beginI++;
                        int num = arr[beginI];
                        arr[beginI] = arr[aim];
                        arr[aim] = num;
                    }
                    
                    if (arr[beginJ] < arr[aim] )
                    {
                        beginI++;
                        int num = arr[beginI];
                        arr[beginI] = arr[beginJ];
                        arr[beginJ] = num;
                    }
                    beginJ++;
                }
                return beginI;
                
            }

    步骤:

  • 相关阅读:
    VMware15 安装centos7标准板
    jQuery拼接HTML标签元素
    解决win10 蓝牙设备只能配对无法连接 ,并且删除设备无效的问题
    Linux:系统的基本优化
    nano编辑器的设置
    Linux:网络yum源设置
    MySQL:MySQL的基本操作
    MySQL:MySQL的安装
    Python之路:堡垒机实例以及数据库操作
    paramiko 模块安装
  • 原文地址:https://www.cnblogs.com/nygfcn1234/p/3204902.html
Copyright © 2011-2022 走看看