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

尽可能用多的编程语言写一个快速排序
·
05月29日
|
浏览 28

好的,以下是使用多种编程语言实现的快速排序算法:

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))

JavaScript

复制代码
function quicksort(arr) {
    if (arr.length <= 1) {
        return arr;
    }
    let pivot = arr[Math.floor(arr.length / 2)];
    let left = [];
    let right = [];
    for (let i = 0; i < arr.length; i++) {
        if (i === Math.floor(arr.length / 2)) continue;
        if (arr[i] < pivot) {
            left.push(arr[i]);
        } else {
            right.push(arr[i]);
        }
    }
    return quicksort(left).concat(pivot, quicksort(right));
}

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

Java

复制代码
import java.util.ArrayList;
import java.util.List;

public class QuickSort {
    public static List<Integer> quicksort(List<Integer> arr) {
        if (arr.size() <= 1) {
            return arr;
        }
        int pivot = arr.get(arr.size() / 2);
        List<Integer> left = new ArrayList<>();
        List<Integer> right = new ArrayList<>();
        for (int num : arr) {
            if (num < pivot) {
                left.add(num);
            } else if (num > pivot) {
                right.add(num);
            }
        }
        return concat(quicksort(left), pivot, quicksort(right));
    }

    private static List<Integer> concat(List<Integer> left, int pivot, List<Integer> right) {
        List<Integer> result = new ArrayList<>();
        result.addAll(left);
        result.add(pivot);
        result.addAll(right);
        return result;
    }

    public static void main(String[] args) {
        List<Integer> arr = List.of(3, 6, 8, 10, 1, 2, 1);
        System.out.println(quicksort(arr));
    }
}

C++

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

std::vector<int> quicksort(const std::vector<int>& arr) {
    if (arr.size() <= 1) {
        return arr;
    }
    int pivot = arr[arr.size() / 2];
    std::vector<int> left, right;
    for (int num : arr) {
        if (num < pivot) {
            left.push_back(num);
        } else if (num > pivot) {
            right.push_back(num);
        }
    }
    auto sortedLeft = quicksort(left);
    auto sortedRight = quicksort(right);
    std::vector<int> result;
    result.reserve(sortedLeft.size() + 1 + sortedRight.size());
    result.insert(result.end(), sortedLeft.begin(), sortedLeft.end());
    result.push_back(pivot);
    result.insert(result.end(), sortedRight.begin(), sortedRight.end());
    return result;
}

int main() {
    std::vector<int> arr = {3, 6, 8, 10, 1, 2, 1};
    auto sortedArr = quicksort(arr);
    for (int num : sortedArr) {
        std::cout << num << " ";
    }
    return 0;
}

Go

复制代码
package main

import "fmt"

func quicksort(arr []int) []int {
	if len(arr) <= 1 {
		return arr
	}
	pivot := arr[len(arr)/2]
	var left, right []int
	for i := range arr {
		if i == len(arr)/2 {
			continue
		} else if arr[i] < pivot {
			left = append(left, arr[i])
		} else {
			right = append(right, arr[i])
		}
	}
	return append(quicksort(left), append([]int{pivot}, quicksort(right)...)...)
}

func main() {
	arr := []int{3, 6, 8, 10, 1, 2, 1}
	sortedArr := quicksort(arr)
	fmt.Println(sortedArr)
}

Rust

复制代码
fn quicksort(arr: &[i32]) -> Vec<i32> {
    if arr.len() <= 1 {
        return arr.to_vec();
    }
    let pivot = arr[arr.len() / 2];
    let mut left = vec![];
    let mut right = vec![];
    for &num in arr {
        if num < pivot {
            left.push(num);
        } else if num > pivot {
            right.push(num);
        }
    }
    let left = quicksort(&left[..]);
    let right = quicksort(&right[..]);
    [left, vec![pivot], right].concat()
}

fn main() {
    let arr = [3, 6, 8, 10, 1, 2, 1];
    let sorted_arr = quicksort(&arr);
    println!("{:?}", sorted_arr);
}

希望这些示例能帮助你理解如何在不同的编程语言中实现快速排序算法。如果你有任何进一步的问题或需要更多的代码示例,请随时告诉我!

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