C#实现快速排序算法

yizhihongxing

下面是C#实现快速排序算法的完整攻略:

快速排序算法简介

快速排序算法是一种高效的排序算法,它的时间复杂度为O(nlogn)。快速排序算法的基本思想是,通过一趟排序将待排序列分隔成独立的两部分,其中一部分的所有数据都比另外一部分小,然后再对这两部分继续进行排序,以达到整个序列有序的目的。

快速排序算法实现步骤

快速排序算法的实现步骤如下:

  1. 选择一个中间值,将基准值设为中间值
  2. 将序列分成左右两部分,左边部分所有元素都小于基准值,右边部分所有元素都大于基准值
  3. 递归对左右两部分进行快速排序

下面是C#实现快速排序算法的代码:

public static void QuickSort(int[] arr, int left, int right)
{
    if (left >= right) // 如果左指针大于等于右指针,说明已经排好序了
    {
        return;
    }

    int pivot = arr[(left + right) / 2]; // 选择中间值作为基准值
    int i = left;
    int j = right;

    while (i <= j)
    {
        while (arr[i] < pivot) // 从左往右找到第一个大于等于基准值的元素
        {
            i++;
        }

        while (arr[j] > pivot) // 从右往左找到第一个小于等于基准值的元素
        {
            j--;
        }

        if (i <= j) // 如果左指针小于等于右指针,说明还没排完
        {
            int temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;

            i++;
            j--;
        }
    }

    QuickSort(arr, left, j); // 递归排序左边部分
    QuickSort(arr, i, right); // 递归排序右边部分
}

示例说明

下面是两条示例说明:

示例1

假设有一个数组arr,元素为{5, 3, 2, 4, 1},要求用快速排序算法进行排序,最终输出结果。

int[] arr = { 5, 3, 2, 4, 1 };
QuickSort(arr, 0, arr.Length - 1);

foreach (int value in arr)
{
    Console.WriteLine(value);
}

输出结果为:

1
2
3
4
5

示例2

假设有一个数组arr,元素为{99, 88, 77, 66, 55, 44, 33, 22, 11},要求用快速排序算法进行排序,最终输出结果。

int[] arr = { 99, 88, 77, 66, 55, 44, 33, 22, 11 };
QuickSort(arr, 0, arr.Length - 1);

foreach (int value in arr)
{
    Console.WriteLine(value);
}

输出结果为:

11
22
33
44
55
66
77
88
99

以上就是C#实现快速排序算法的完整攻略,希望对您有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#实现快速排序算法 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • C++实现堆排序示例

    下面就详细讲解一下“C++实现堆排序示例”的完整攻略。 什么是堆排序 堆排序是一种树形选择排序方法,它是通过将待排序的序列构建成一个堆,在堆中,全局最大或最小的元素总是位于根节点,根节点最大或最小的元素会被输出到一个新的序列中,再将剩余的元素重新构建成堆进行下一轮循环,直到所有元素均被输出为止。 实现步骤 堆排序主要有两个步骤:构建堆和调整堆。 构建堆 将待…

    算法与数据结构 2023年5月19日
    00
  • 深入解析Radix Sort基数排序算法思想及C语言实现示例

    深入解析Radix Sort基数排序算法思想及C语言实现示例 什么是基数排序算法 基数排序即Radix Sort,是一种非比较型排序算法。相比于其他排序算法,如快速排序、归并排序等,基数排序的时间复杂度较为稳定,且不受数据规模的影响,适用于数据范围较小但位数较多的序列排序。 基数排序算法思想 基数排序算法的核心思想是按照不同位数上的数字对数据进行排序,从低位…

    算法与数据结构 2023年5月19日
    00
  • 可能是你看过最全的十大排序算法详解(完整版代码)

    针对“可能是你看过最全的十大排序算法详解(完整版代码)”这篇文章,下面是详细的攻略: 标题 首先,该文章的标题是:可能是你看过最全的十大排序算法详解(完整版代码) 文章简介 其次,在文章简介中,作者提到该篇文章是一个完整介绍了十大排序算法并且附有代码实现的文章,可以帮助读者了解这些排序算法的原理和代码实现。 内容 文章的主体部分是对十大排序算法进行详细的讲解…

    算法与数据结构 2023年5月19日
    00
  • JavaScript实现数组全排列、去重及求最大值算法示例

    JavaScript实现数组全排列、去重及求最大值算法示例 实现数组全排列 数组的全排列即为将数组中所有元素进行全排列的结果。实现数组全排列的常用方法为回溯法。 回溯法的思想是从第一个元素开始,固定第一个元素,对于剩下的元素进行全排列,得到结果后将第一个元素与第二个元素交换,并对第二个元素之后的元素进行全排列,以此类推,直到最后一个元素,此时将所有的结果返回…

    算法与数据结构 2023年5月19日
    00
  • 常用的C语言排序算法(两种)

    常用的C语言排序算法(两种) 排序算法是计算机程序员经常用到的算法,在实际的开发中排序算法往往可以提升程序的效率。在C语言中常用的排序算法有很多种,其中比较常见的包括快速排序和冒泡排序两种。 快速排序 快速排序(Quick Sort)是一种分而治之的思想,它通过在数据集合中挑选一个基准数,将数据集合分成两部分,一部分大于基准数,一部分小于基准数,然后对这两部…

    算法与数据结构 2023年5月19日
    00
  • Java实现插入排序,希尔排序和归并排序

    Java实现插入排序、希尔排序和归并排序 插入排序 插入排序算法的思路是:将一个待排序的数组(序列)分为两部分,前面的有序序列和后面的无序序列,将无序序列中的每一个元素插到有序序列中的适当位置,直到无序序列为空。 Java代码实现: public static void insertionSort(int[] arr) { int i, j, temp; f…

    算法与数据结构 2023年5月19日
    00
  • C++ sort排序之降序、升序使用总结

    C++ sort排序之降序、升序使用总结 介绍 sort函数是C++ STL库提供的一种排序函数,可以快速方便地对数组或容器进行排序。本文将详细介绍sort函数的用法,包括排序方式、自定义比较函数和对容器的排序等内容。 基本用法 sort函数的声明如下: template <class RandomAccessIterator> void sor…

    算法与数据结构 2023年5月19日
    00
  • C语言排序方法(冒泡,选择,插入,归并,快速)

    下面是关于C语言排序方法冒泡、选择、插入、归并、快速的详细攻略: 冒泡排序 冒泡排序是一种最简单的排序算法,它的核心思想是从左到右依次比较相邻的两个元素,如果前一个元素大于后一个元素,就交换它们的位置,这样一遍比较后,最大的元素就会被“冒泡”到最右边。然后再对剩余的元素重复同样的操作,这样一直迭代直到整个序列排序完成。 下面是标准的C语言冒泡排序代码示例: …

    算法与数据结构 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部