栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

算法-快排

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

算法-快排

文章目录
  • 题目
  • c++快排
    • 解答:
  • java快排
    • 解答
  • python快排解答

题目

洛谷快排
acwing快排

c++快排
#include

using namespace std;

void quick_sort(int q[], int l,int r){
    if(l>=r) return;

	//取一个值为基准,基准左边是小值,右边反之
	//i从左到右,j反之
	//i>=j遍历完成
	//两分,再递归	
    int mid = q[r+l >> 1],i=l-1,j=r+1; 
    while(imid);
    	if(i 
解答: 
#include

using namespace std;

const int N = 1e5+10;
int q[N];

void quick_sort(int q[], int l,int r){
    if(l>=r) return;

    int mid = q[r+l >> 1],i=l-1,j=r+1; 
    while(imid);
    	if(i>n;
	for(int i=0;i>q[i];
	} 
    quick_sort(q,0,n-1);
    for (int i = 0; i < n; i++)
    {
        cout< 
java快排 
    public static void quickSort(int[] q, int l, int r) {
        if (l >= r) return;
		
		//取一个值为基准,基准左边是小值,右边反之
		//i从左到右,j反之
		//i>=j遍历完成
		//两分,再递归
        int mid = q[r + l >> 1], i = l - 1, j = r + 1;
        while (i < j) {
            do i++; while (mid > q[i]);
            do j--; while (mid < q[j]);
            if (i < j)
                swap(q, i, j);
        }

        quickSort(q, l, j);
        quickSort(q, j + 1, r);

    }

    private static void swap(int[] q, int i, int j) {
        int temp = q[i];
        q[i] = q[j];
        q[j] = temp;
    }

解答
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int[] q =new int[n];
        for (int i = 0; i < n; i++) {
            q[i]=in.nextInt();
        }
        quickSort(q, 0, q.length - 1);
        for (int i = 0; i < q.length; i++) {
            System.out.printf("%d ", q[i]);
        }
    }

    public static void quickSort(int[] q, int l, int r) {
        if (l >= r) return;

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

        quickSort(q, l, j);
        quickSort(q, j + 1, r);

    }

    private static void swap(int[] q, int i, int j) {
        int temp = q[i];
        q[i] = q[j];
        q[j] = temp;
    }

}
python快排解答
# -*- coding:utf-8 -*-
"""
作音: 一只爱吃萝卜的小兔子
日期: 2021年10月14日
"""
# python中list 的下标可以为负,故j可从左到右
# -*- coding:utf-8 -*-
"""
作音: 一只爱吃萝卜的小兔子
日期: 2021年10月14日
"""


def quick_sort(q, l, r):
    if l >= r:
        return
    mid = q[r + l >> 1]  # 取最后一个为基准
    i = l-1
    j = r+1
    while i=mid:
                break
        while True:
            j=j-1
            if q[j]<=mid:
                break
        if i
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/326669.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号