快速排序算法的思想:
1.选取数组中的一个基准元素pivot
2.分区:将这个数组中小于基准元素的元素移动到基准元素左边,数组中大于基准元素的元素移动到基准元素右边
3.对分成后的两区重复步骤2,直至两区间中只剩下一个元素
代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 快速排序_代码展示
{
internal class Program
{
/// <summary>
/// 快速排序的平均算法复杂度是O(nlogn),最坏情况是O(n ^ 2)
/// </summary>
static void quicksort(int[] a, int low, int high)
//a是待排序的数组,low是数组的起始下标,high是数组的结束下标
{
int i = a[low];//指定i指针
int j = a[high];//指定j指针
int pivot = a[low];
//选择基准元素,一般选择起始下标的元素作为基准元素
while (i < j)
//判断起始位置指针所指向的元素是否小于结束位置指针所指向的元素
{
//如果起始元素大小小于结束位置元素并且j指针指向的元素大小小于基准元素
//因为选取的是起始下标的元素作为基准元素,所以先移动j指针
while (i < j && a[j]

最低0.47元/天 解锁文章
602





