• C#排序算法的实现---快速排序


      快速排序(Quicksort)是对冒泡排序的一种改进。由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

    二、算法分析

      快速排序每次将待排序数组分为两个部分,在理想状况下,每一次都将待排序数组划分成等长两个部分,则需要logn次划分。而在最坏情况下,即数组已经有序或大致有序的情况下,每次划分只能减少一个元素,快速排序将不幸退化为冒泡排序,所以快速排序时间复杂度下界为O(nlogn),最坏情况为O(n^2)。在实际应用中,快速排序的平均时间复杂度为O(nlogn)。

      快速排序是不稳定的排序算法。

    三、算法实现

    public class QuickSort
        {
            //一趟排序
            private int SortUnit(int[] list, int i, int j)
            {
                int k=list[i];
                while (i != j)
                {
                    while (j > i)
                    {
                        if (list[j] < k)
                        {
                            list[i] = list[j];
                            break;
                        }
                        j--;
                    }
                    while (i < j)
                    {
                        if (list[i] > k)
                        {
                            list[j] = list[i];
                            break;
                        }
                        i++;
                    }
                }
                list[i] = k;
           return i;
            }
    
            //递归
            private void QuickSortArray(int[] list, int l, int r)
            {
                //当左下标和右下标碰头排序结束
                if (l >= r)
                    return;
                int index = SortUnit(list, l, r);
                QuickSortArray(list, l, index);
                QuickSortArray(list, index + 1, r);
            }
    
            //快速排序
            public void Sort(int[] list)
            {
                QuickSortArray(list, 0, list.Length - 1);
            }
        }
  • 相关阅读:
    base64 转blob,base64 转文件
    下载附件时防止连点
    windows更新失败
    ValidationError: webpack Dev Server Invalid Options
    导入,导出
    软件的结构
    VueRouter(一)
    根据IP判断所在地区
    phpcms v9 非超级管理员 发布不了内容的解决办法
    VIM 快捷键
  • 原文地址:https://www.cnblogs.com/DCLi/p/QuickSort.html
Copyright © 2020-2023  润新知