三種語言實現快速排序(C++/Python/Java)

火车驶向云外0218發表於2024-07-21

給定你一個長度為n的整數數列。
請你使用快速排序對這個數列按照從小到大進行排序。
並將排好序的數列按順序輸出。

輸入格式
輸入共兩行,第一行包含整數 n

第二行包含 n 個整數(所有整數均在 1∼109 範圍內),表示整個數列。

輸出格式輸出共一行,包含 n 個整數,表示排好序的數列。

C++

#include <bits/stdc++.h>

using namespace std;

const int N = 100010;
int q[N];

void quick_sort(int q[], int l, int r)
{
    if(l >= r)
        return;
    int i = l-1, j = r+1;
    int x = q[(l+r)>>1];
    while(i < j)
    {
        do i++; while(q[i] < x);
        do j--; while(q[j] > x);
        if(i < j)
            swap(q[i],q[j]);
    }
    quick_sort(q,l,j);
    quick_sort(q,j+1,r);
}

int main()
{
    int n;
    cin >> n;
    for(int i = 0; i < n; i++)
        cin >> q[i];
    quick_sort(q,0,n-1);
    for(int i = 0; i < n; i++)
        cout << q[i] << " ";
    
}

Python

import random

n = int(input())
nums = [int(x) for x in input().split()]

def quick_sort(nums, l, r):
    if l >= r:
        return
    i = l
    j = r
    x = nums[random.randint(l,r)]
    while i <= j:
        while nums[i] < x: i += 1
        while nums[j] > x: j -= 1
        if i <= j:   
            nums[i], nums[j] = nums[j], nums[i]
            i += 1
            j -= 1
    quick_sort(nums,l,j)
    quick_sort(nums,j+1,r)

quick_sort(nums, 0, n-1)
for i in range(n):
    print(nums[i], end=" ")

Java

import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] q = new int[n];
        for(int i = 0; i < n; i++)
            q[i] = sc.nextInt();
        quick_sort(q, 0, n-1);
        for(int i = 0; i < n; i++)
            System.out.print(q[i] + " ");
    }
    
    public static void quick_sort(int[] q, int l, int r){
        if(l >= r)
            return;
        int i = l-1, j = r+1, x = q[(l+r)>>1];
        while(i < j){
            while(q[++i] < x);
            while(q[--j] > x);
            if(i < j){
                int t = q[i];
                q[i] = q[j];
                q[j] = t;
            }
        }
        quick_sort(q, l, j);
        quick_sort(q, j+1, r);
    }
}

相關文章