91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

c#快速排序如何處理重復元素

c#
小樊
85
2024-06-25 23:39:02
欄目: 編程語言

在快速排序中處理重復元素的方法是通過增加一個判定條件來確保不再對重復元素進行排序。具體來說,可以在劃分數組時,將與基準元素相等的元素放到基準元素的左邊或右邊,而不是將它們分別放在基準元素的左右兩側。

以下是一個示例代碼:

public static void QuickSort(int[] arr, int low, int high)
{
    if (low < high)
    {
        int pi = Partition(arr, low, high);

        QuickSort(arr, low, pi - 1);
        QuickSort(arr, pi + 1, high);
    }
}

public static int Partition(int[] arr, int low, int high)
{
    int pivot = arr[high];
    int i = low - 1;

    for (int j = low; j < high; j++)
    {
        if (arr[j] < pivot)
        {
            i++;
            Swap(arr, i, j);
        }
        else if (arr[j] == pivot)
        {
            i++;
        }
    }

    Swap(arr, i + 1, high);
    return i + 1;
}

public static void Swap(int[] arr, int i, int j)
{
    int temp = arr[i];
    arr[i] = arr[j];
    arr[j] = temp;
}

在上面的代碼中,如果遇到與基準元素相等的元素,將其放在基準元素的左邊(在這里是直接跳過,不再做交換)。這樣可以確保不再對重復元素進行排序,同時保持原始數組的順序。

0
永清县| 九龙城区| 响水县| 石楼县| 潜山县| 承德市| 江华| 台中县| 衡东县| 垣曲县| 临沭县| 高阳县| 新沂市| 洛川县| 昌平区| 玉门市| 菏泽市| 远安县| 怀化市| 鲁甸县| 若尔盖县| 凯里市| 乐都县| 玛纳斯县| 斗六市| 新巴尔虎右旗| 谢通门县| 千阳县| 高要市| 泉州市| 望都县| 平昌县| 合肥市| 礼泉县| 惠安县| 泸定县| 安泽县| 德格县| 乌拉特前旗| 绵竹市| 青龙|