Logo
开发文档
QQ频道

尽可能用多的编程语言写一个快速排序

2025-05-29 10:17:30
|
浏览 47

好的,我将为你撰写一篇关于使用多种编程语言实现快速排序的文章。以下是文章内容:


使用多种编程语言实现快速排序

快速排序(QuickSort)是一种高效的排序算法,以其速度快、原地排序等特点被广泛使用。本文将展示如何用多种编程语言实现这一经典算法。我们将采用Python、Java、C++、JavaScript和Ruby这五种语言来编写快速排序程序。

Python 实现

以下是一个使用Python实现的快速排序示例:

复制代码
def quicksort(arr):
    if len(arr) <= 1:
        return arr
    pivot = arr[len(arr) // 2]
    left = [x for x in arr if x < pivot]
    middle = [x for x in arr if x == pivot]
    right = [x for x in arr if x > pivot]
    return quicksort(left) + middle + quicksort(right)

# 示例用法
arr = [3, 6, 8, 10, 1, 2, 1]
print(quicksort(arr))

Java 实现

以下是一个使用Java实现的快速排序示例:

复制代码
import java.util.Arrays;

public class QuickSort {
    public static void main(String[] args) {
        int[] arr = {3, 6, 8, 10, 1, 2, 1};
        quicksort(arr, 0, arr.length - 1);
        System.out.println(Arrays.toString(arr));
    }

    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++;
                int temp = arr[i];
                arr[i] = arr[j];
                arr[j] = temp;
            }
        }
        int temp = arr[i + 1];
        arr[i + 1] = arr[high];
        arr[high] = temp;
        return i + 1;
    }
}

C++ 实现

以下是一个使用C++实现的快速排序示例:

复制代码
#include <iostream>
#include <vector>
#include <algorithm>

void quicksort(std::vector<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);
    }
}

int partition(std::vector<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;
            std::swap(arr[i], arr[j]);
        }
    }
    std::swap(arr[i + 1], arr[high]);
    return i + 1;
}

int main() {
    std::vector<int> arr = {3, 6, 8, 10, 1, 2, 1};
    quicksort(arr, 0, arr.size() - 1);
    for (int i : arr) {
        std::cout << i << " ";
    }
    return 0;
}

JavaScript 实现

以下是一个使用JavaScript实现的快速排序示例:

复制代码
function quicksort(arr, low = 0, high = null) {
    if (high === null) high = arr.length - 1;
    if (low < high) {
        let pi = partition(arr, low, high);
        quicksort(arr, low, pi - 1);
        quicksort(arr, pi + 1, high);
    }
}

function partition(arr, low, high) {
    let pivot = arr[high];
    let i = low - 1;
    for (let j = low; j < high; j++) {
        if (arr[j] < pivot) {
            i++;
            [arr[i], arr[j]] = [arr[j], arr[i]];
        }
    }
    [arr[i + 1], arr[high]] = [arr[high], arr[i + 1]];
    return i + 1;
}

let arr = [3, 6, 8, 10, 1, 2, 1];
quicksort(arr);
console.log(arr);

Ruby 实现

以下是一个使用Ruby实现的快速排序示例:

复制代码
def quicksort(arr, low = 0, high = nil)
    if high.nil? then high = arr.length - 1 end
    if low < high
        pi = partition(arr, low, high)
        quicksort(arr, low, pi - 1)
        quicksort(arr, pi + 1, high)
    end
end

def partition(arr, low, high)
    pivot = arr[high]
    i = low - 1
    for j in (low..high-1)
        if arr[j] < pivot
            i += 1
            arr[i], arr[j] = arr[j], arr[i]
        end
    end
    arr[i + 1], arr[high] = arr[high], arr[i + 1]
    return i + 1
end

arr = [3, 6, 8, 10, 1, 2, 1]
quicksort(arr)
puts arr.inspect

通过以上示例,我们可以看到在不同的编程语言中实现快速排序的语法和逻辑是非常相似的。尽管每种语言有其特定的语法和特性,但算法的本质保持不变。希望这篇文章对你理解快速排序及其在不同语言中的实现有所帮助。


希望你喜欢这篇关于使用多种编程语言实现快速排序的文章!

我要提问
复制内容
分享给好友
AI编程问答网 免责声明:
以上内容除特别注明外均来源于网友提问,AI编程问答网回答,权益归原著者所有;
 
下一篇: 已经是最后一篇了~