常见的排序算法---快速排序算法

快速排序算法

快排是基于分治 的思想来的,快速排序就是在元素序列中选择一个元素作为基准值,每趟总数据元素的两端开始交替排序 ,将小于基准值的交换的序列前端,大于基准值的交换到序列后端,介于两者之间的位置称为基准值最终的位置 。同时序列被划分成两个子序列 ,再对两个子序列进行排序,这个过程就是递归 的过程,直到子序列的长度为1,则完成排序。

模板 洛谷:P1177排序

代码

c 复制代码
import java.util.Scanner;

class quickSort {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        int n=scanner.nextInt();
        int arr[]=new int[n];
        for (int i = 0; i < arr.length; i++) {
            arr[i]=scanner.nextInt();
        }
        quick(arr,0,arr.length-1);
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i]+" ");
        }
    }
    public  static  void quick(int [] keys, int begin,int end){
        if (begin>=0&&begin<end&&end<keys.length){
            int i=begin,j=end;
            int x=keys[i];//找到基准元素
            while (i!=j){ //
                while (i<j&&keys[j]>=x){ //从后往前找
                    j--;
                } //直到找到小的数字了
                if (i<j){
                    keys[i++]=keys[j]; //i往后移动一位,讲原来i的位置赋值给j
                }
                while (i<j&keys[i]<=x){ //从前向后寻找较大值移动
                    i++;
                }//找到较大值了
                if (i<j){
                    keys[j--]=keys[i];//讲较大值赋值给j,并且j往前移动一位;
                }
            }
            //当i等于j的时候结束上面的循环 需要重新设置基准值,基准值就是当前的位置

            keys[i]=x;
            quick(keys,begin,j-1);
            quick(keys,i+1,end);
        }

    }
}
时间复杂度 最好 nlogn 最坏on方

快速排序算法并且是不稳地的。

相关推荐
im_AMBER5 分钟前
Leetcode 103 反转链表 II
数据结构·c++·笔记·学习·算法·leetcode
rgeshfgreh9 分钟前
回溯算法精解:排列、子集与组合
python·算法·深度优先
rit843249930 分钟前
有限元算法求解铁木辛柯梁梁静力问题实例
算法
智驱力人工智能32 分钟前
矿山皮带锚杆等异物识别 从事故预防到智慧矿山的工程实践 锚杆检测 矿山皮带铁丝异物AI预警系统 工厂皮带木桩异物实时预警技术
人工智能·算法·安全·yolo·目标检测·计算机视觉·边缘计算
忆锦紫35 分钟前
图像降噪算法:中值滤波算法及MATLAB实现
图像处理·算法·matlab
知乎的哥廷根数学学派37 分钟前
基于多分辨率注意力脉冲神经网络的机械振动信号故障诊断算法(西储大学轴承数据,Pytorch)
人工智能·pytorch·深度学习·神经网络·算法·机器学习
kebijuelun1 小时前
Qwen 团队提出 ArenaRL:面向开放式 Agent RL 任务
人工智能·算法·语言模型·transformer
机器学习之心1 小时前
PSO优化的K-means++聚类算法用于用户用电行为分析的实现方案
算法·kmeans·聚类
小黄鸭code1 小时前
C++ 算法笔试题(常见算法版)
c++·算法·排序算法
lixinnnn.1 小时前
优先级队列:最小函数值
数据结构·算法