[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/tpxxn/algorithm-pattern-CSharp/main/basic_algorithm/sort.md [Back]  [Original]

# 

## 

### 

```csharp
public void QuickSort(int[] nums)
{
    // 
    QuickSort(nums, 0, nums.Length - 1);
}

// 
private void QuickSort(int[] nums, int start, int end)
{
    if (start < end)
    {
        // divide
        int pivot = Partition(nums, start, end);
        QuickSort(nums, 0, pivot - 1);
        QuickSort(nums, pivot + 1, end);
    }
}

// 
private int Partition(int[] nums, int start, int end)
{
    // pivot
    int p = nums[end];
    int i = start;
    // 
    for (int j = start; j < end; j++)
    {
        if (nums[j] < p)
        {
            (nums[i], nums[j]) = (nums[j], nums[i]);
            i++;
        }
    }
    // 
    (nums[i], nums[end]) = (nums[end], nums[i]);
    return i;
}
```

### 

```csharp
public void MergeSort(int[] nums)
{
    MergeSort(nums, 0, nums.Length);
}

private void MergeSort(int[] nums, int start, int end)
{
    if (end - start   VS 

![image.png](https://img.fuiboom.com/img/tree_type.png)

[](https://www.bilibili.com/video/av18980178/)

![image.png](https://img.fuiboom.com/img/heap.png)



```csharp
public void HeapSort(int[] nums)
{
    // 1nums
    // 2nums
    for (int i = nums.Length / 2 - 1; i >= 0; i--)
    {
        Sink(nums, i, nums.Length);
    }
    // 3nums[0]nums[len(a)-1]
    // 4
    for (int i = nums.Length - 1; i >= 0; i--)
    {
        // 
        (nums[0], nums[i]) = (nums[i], nums[0]);
        // 
        Sink(nums, 0, i);
    }
}

private void Sink(int[] nums, int i, int length)
{
    while (true)
    {
        // (0i*2+1)
        int l = i * 2 + 1;
        // 
        int r = i * 2 + 2;
        // 
        int index = i;
        // 
        if (l < length && nums[l] > nums[index])
        {
            index = l;
        }
        // 
        if (r < length && nums[r] > nums[index])
        {
            index = r;
        }
        // 
        if (index == i)
        {
            break;
        }
        // 
        (nums[i], nums[index]) = (nums[index], nums[i]);
        i = index;
    }
}
```

## 

[](https://www.cnblogs.com/onepixel/p/7674659.html)

[](https://labuladong.gitbook.io/algo/shu-ju-jie-gou-xi-lie/er-cha-dui-xiang-jie-shi-xian-you-xian-ji-dui-lie)

## 

- [ ] 

Web Proxy Viewer  |  New URL  |  Original Page