快速排序的学习


一、题目

题目描述
利用快速排序算法将读入的 N 个数从小到大排序后输出。

快速排序是信息学竞赛的必备算法之一。对于快速排序不是很了解的同学可以自行上网查询相关资料,掌握后独立完成。(C++C++ 选手请不要试图使用 STL,虽然你可以使用 sort 一遍过,但是你并没有掌握快速排序算法的精髓。)

输入格式
第 11 行为一个正整数 N,第 22 行包含 N 个空格隔开的正整数 a_ia
i

,为你需要进行排序的数,数据保证了 A_iA
i

不超过 10^910
9

输出格式
将给定的 N 个数从小到大输出,数之间空格隔开,行末换行且无空格。
输入输出样例
输入
5
4 2 4 5 1
输出
1 2 4 4 5

二、题解

1.引入库

代码如下:

import java.util.Scanner;public class Quicksort {public static void main(String[] args) {// TODO Auto-generated method stubScanner sc = new Scanner(System.in);int[] arr = new int[100];int N = sc.nextInt();for(int i = 0;i < N; i++) {arr[i] = sc.nextInt();}sort(arr,0,N-1);for(int i = 0;i < N;i++) {System.out.print(arr[i] + " ");}sc.close();}public static void sort(int[] arr,int low,int high) {if(low >= high) {   //结束条件return;}int i = low;int j = high;int key = arr[i];while(i < j) {while(arr[j] > key && i < j) {j--;}int temp;temp = arr[i];arr[i] = arr[j];arr[j] = temp;while(arr[i] <= key && i < j) {i++;}temp = arr[i];arr[i] = arr[j];arr[j] = temp;}sort(arr,low,i-1);  //对基准左侧集合重复操作sort(arr,i+1,high); //对基准右侧集合重复操作}
}
随缘学习!!!

2.输入输出结果

5
4 2 4 5 1
1 2 4 4 5

总结

个人人为快速排序的方法主要是了解从两头开始,分别向中间滑动,并且需要找一个基准来标记滑动停止的位置,然后在对基准两边的集合进行重复操作进行排序,最后输出即可。
随缘学习

快速排序法(随缘学习)相关推荐

  1. 探索初级算法学习笔记-快速排序法

    快速排序法学习笔记 #include<stdio.h>void swap(int *a,int *b) {int t;t=*a;*a=*b;*b=t; }void quickSort(in ...

  2. 快速排序法实战入门(推荐)

    //主要思路:先选第一个数组的值记为基准数     //从最后一个素组j的值开始与基准数比较,倒推(j--)      //当找到比基准数小的数值时,停止比较,     //从第一个数组i的值开始与基 ...

  3. c语言排快速排序过程,C语言中快速排序法怎么排

    快速排序法的排法:首先每次排序的时候设置一个基准点,将小于等于基准点的数全部放到基准点的左边:然后将大于等于基准点的数全部放到基准点的右边:最后在每次交换的时候就不会像冒泡排序一样每次只能在相邻的数之 ...

  4. 经典算法之快速排序法(附B站最细讲解视频)

    活动地址:21天学习挑战赛 文章目录 一.算法 1.算法概述 2.算法步骤 3.算法特点 二.算法实践 1.Java代码 2.执行结果 3.讲解视频 三.复杂度分析 1.时间复杂度 2.空间复杂度 一 ...

  5. 1.16 快速排序法(Quicksort)

    快速排序(Quicksort)是对冒泡排序的一种改进,是一种排序执行效率很高的排序算法. 快速排序的基本思想是:通过一趟排序,将要排序的数据分隔成独立的两部分,其中一部分的所有数据比另外一部分的所有数 ...

  6. php四种基础算法:冒泡,选择,插入和快速排序法

    许多人都说 算法是程序的核心,一个程序的好于差,关键是这个程序算法的优劣.作为一个初级phper,虽然很少接触到算法方面的东西 .但是对于冒泡排序,插入排序,选择排序,快速排序四种基本算法,我想还是要 ...

  7. 算法之旅 | 快速排序法

    HTML5学堂-码匠:前几期"算法之旅"跟大家分享了冒泡排序法和选择排序法,它们都属于时间复杂度为O(n^2)的"慢"排序.今天跟大家分享多种排序算法里使用较广 ...

  8. oracle快速排序法,经典算法系列之快速排序算法

    快速排序(Quicksort)是对冒泡排序的一种改进.由C. A. R. Hoare在1962年提出.在平均状况下,排序 n 个项目要Ο(n log n)次比较.在最坏状况下则需要Ο(n2)次比较,但 ...

  9. 【JavaScript算法】---快速排序法

    一.快速排序法概念 我们将一个杂乱无章的数组进行一个快速排序,可以先从一个数组中取一个中间值,将一个数组一分为2,左边的数组跟中间值进行比较,小的放在左边,大的放在右边.比较完毕后再次取中间值,再次比 ...

最新文章

  1. 朴素贝叶斯算法的python实现
  2. Python使用matplotlib进行3D可视化分析:3d柱状图、3d直方图、3d线框图、3d曲面图、3d翼面图(莫比乌斯环)
  3. 皮一皮:这是什么家族企业?
  4. 数学建模,还得这样学!
  5. 分步骤演示如何使用Filter链拦截MyServlet的同一个请求
  6. java序列化原理_Java序列化机制和原理
  7. 【PRML 学习笔记】附录 - 变分法 (Calculus of Variations)
  8. Vue引入vue-qr组件实现生成二维码,且实现在二维码中间加入logo图片功能
  9. viper12a电源电路图_基于VIPER12A芯片设计的开关电源
  10. TreeMap根据value排序遇到的问题及分析
  11. RT-Thread学习笔记【网络设备与BSD套接字组件】
  12. 一分钟让你知道Hadoop是什么
  13. java开发操作系统:启动任意多控制台窗口
  14. Recovery 恢复
  15. js 数组转json,json转数组
  16. Android 动画方案
  17. 计网读书笔记day1
  18. 高端大气上档次的fullPage.js
  19. ajax动态加载div,JQuery/AJAX:使用动态内容加载外部DIV使用动态内容
  20. MyBatis-Plus分页查询

热门文章

  1. 2020烽火通信笔试面试经验
  2. 玫瑰及玫瑰精油的效用
  3. python cut函数_基于python cut和qcut的用法及区别详解
  4. 读书笔记:《持续交付》
  5. JAVA根据IP确定时区_2019-05-23 Java根据地址计算日出日落时间(百度地图API)
  6. 8086为什么不用c语言,现代汇编教材还是基于8086,对理解当今CPU(如i9)有帮助吗,还是教程太滞后?_科技数码通...
  7. 三坐标检测难点:创新的“大半径,小圆弧“测量解决方法 2021
  8. 2014 2013 一级建造师视频/建筑/法律/经济/机电/市政/水利/管理
  9. Golang 中的 Goroutine 调度原理与 Chanel 通信
  10. 学校html列表代码,高考报名学校代码