快速排序(c++,java)

简介: 快速排序(c++,java)

快速排序(c++,java)

给定你一个长度为 n的整数数列。

请你使用快速排序对这个数列按照从小到大进行排序。

并将排好序的数列按顺序输出。

输入格式

输入共两行,第一行包含整数 n。

第二行包含 n个整数(所有整数均在 1∼109范围内),表示整个数列。

输出格式

输出共一行,包含 n个整数,表示排好序的数列。

数据范围

1≤n≤100000

输入样例:

5

3 1 2 4 5

输出样例:

1 2 3 4 5

提交代码

c++

#include<iostream>
using namespace std;
const int N = 1e6 + 10;
int q[N];
void quick_sork(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)
    {
        do i ++; while(q[i] < x);
        do j --; while(q[j] > x);
        if (i < j) swap(q[i], q[j]);
    }
    quick_sork(q, l, j); quick_sork(q, j + 1, r);
}
int main()
{
    int n;
    cin >> n;
    for (int i = 0; i < n; ++ i) cin >> q[i];
    quick_sork(q, 0, n - 1);
    for (int i = 0; i < n; ++ i) cout << q[i] << " ";
    return 0;
}

java

import java.util.Scanner;
import java.io.*;
public class Main
{
    public static void main(String [] args)
    {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int [] arr = new int [n];
        for (int i = 0; i < n; ++ i)
        {
            arr[i] = in.nextInt();
        }
        quickSort(arr, 0, n - 1);
        for (int i = 0; i < n; ++ i)
        {
            System.out.print(arr[i] + " ");
        }
    }
    public static void quickSort(int [] arr, int l, int r)
    {
        if (l >= r) return;
        int x = arr[(l + r) / 2], i = l - 1, j = r + 1;
        while(i < j)
        {
            do{
                i ++;
            } while(arr[i] < x);
            do{
                j --;
            } while(arr[j] > x);
            if (i < j)
            {
                int temp = arr[i];
                arr[i] = arr[j];
                arr[j] = temp;
            }
        }
        quickSort(arr, l, j);
        quickSort(arr, j + 1, r);
    }
}


相关文章
|
16天前
|
jenkins Shell 测试技术
|
10天前
|
存储 缓存 监控
用 C++ 红黑树给公司电脑监控软件的日志快速排序的方法
本文介绍基于C++红黑树算法实现公司监控电脑软件的日志高效管理,利用其自平衡特性提升日志排序、检索与动态更新效率,并结合实际场景提出优化方向,增强系统性能与稳定性。
26 4
|
16天前
|
安全 jenkins Java
Java、Python、C++支持jenkins和SonarQube(一)
Jenkins 是一个开源的 持续集成(CI)和持续交付(CD) 工具,用于自动化构建、测试和部署软件项目。它基于 Java 开发,支持跨平台运行,并拥有丰富的插件生态系统,可以灵活地扩展功能
73 5
|
16天前
|
jenkins Java Shell
Java、Python、C++支持jenkins和SonarQube(全集)
Jenkins 是一个开源的持续集成(CI)和持续交付(CD)工具,用于自动化构建、测试和部署软件项目。它基于 Java 开发,支持跨平台运行,并拥有丰富的插件生态系统,可以灵活地扩展功能
114 1
|
16天前
|
jenkins Java 持续交付
|
16天前
|
jenkins Java 测试技术
|
4月前
|
算法 Java 数据库连接
Java 与 C++ 区别深入剖析及应用实例详解
本文深入剖析了Java和C++两种编程语言的区别,从编译与执行机制、面向对象特性、数据类型与变量、内存管理、异常处理等方面进行对比,并结合游戏开发、企业级应用开发、操作系统与嵌入式开发等实际场景分析其特点。Java以跨平台性强、自动内存管理著称,适合企业级应用;C++则因高性能和对硬件的直接访问能力,在游戏引擎和嵌入式系统中占据优势。开发者可根据项目需求选择合适语言,提升开发效率与软件质量。附面试资料链接:[点此获取](https://pan.quark.cn/s/4459235fee85)。
310 0
|
搜索推荐 Java 索引
java实现快速排序(详细解释代码和逻辑)
java实现快速排序(详细解释代码和逻辑)
|
9月前
|
搜索推荐 C++
【C++数据结构——内排序】快速排序(头歌实践教学平台习题)【合集】
快速排序是一种高效的排序算法,基于分治策略。它的主要思想是通过选择一个基准元素(pivot),将数组划分成两部分。一部分的元素都小于等于基准元素,另一部分的元素都大于等于基准元素。然后对这两部分分别进行排序,最终使整个数组有序。(第一行是元素个数,第二行是待排序的原始关键字数据。本关任务:实现快速排序算法。开始你的任务吧,祝你成功!
203 7
|
10月前
|
Java Android开发 C++
Java和C++
Java和C++
163 15