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

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

代码

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方

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

相关推荐

  1. 常见排序算法---快速排序算法

    2023-12-23 01:18:03       81 阅读
  2. 常见算法快速排序

    2023-12-23 01:18:03       36 阅读
  3. 常见排序算法

    2023-12-23 01:18:03       58 阅读
  4. 排序算法快速排序基本算法

    2023-12-23 01:18:03       46 阅读
  5. 排序算法——快速排序

    2023-12-23 01:18:03       58 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-23 01:18:03       91 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-23 01:18:03       97 阅读
  3. 在Django里面运行非项目文件

    2023-12-23 01:18:03       78 阅读
  4. Python语言-面向对象

    2023-12-23 01:18:03       88 阅读

热门阅读

  1. Oracle-表备份、表数据备份、create select语句备份

    2023-12-23 01:18:03       61 阅读
  2. 设计测试用例

    2023-12-23 01:18:03       50 阅读
  3. 数据结构【2】:列表专题

    2023-12-23 01:18:03       58 阅读
  4. 【Linux】Linux中链表数据结构详细说明及用法代码

    2023-12-23 01:18:03       53 阅读
  5. LeetCode2828. Check if a String Is an Acronym of Words

    2023-12-23 01:18:03       58 阅读
  6. 面试算法65:最短的单词编码

    2023-12-23 01:18:03       59 阅读
  7. Macbook安装nvm以切换node版本

    2023-12-23 01:18:03       67 阅读
  8. nginx upstream 6种负载均衡策略介绍

    2023-12-23 01:18:03       52 阅读
  9. Android开发中实时语音开发之华为实时语音识别

    2023-12-23 01:18:03       64 阅读
  10. npm的使用技巧

    2023-12-23 01:18:03       50 阅读
  11. 基于MATLAB的模板匹配实现英文字母识别

    2023-12-23 01:18:03       56 阅读
  12. 做开发死路一条?一名五年全栈的看法

    2023-12-23 01:18:03       62 阅读
  13. junit-mock-controller

    2023-12-23 01:18:03       59 阅读