排序算法--快速排序
快速排序:快速排序(Quicksort)是对冒泡排序的一种改进。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
在这里我给大家提供个网站 http://www.atool.org/sort.php,是关于各种排序算法演示过程的。好了,不多赘述,直接上代码。
方法一
1 package com.feimao.com.feimao.a2.test; 2 3 import java.util.Arrays; 4 5 public class QuickSort { 6 public static void quickSort(int arr[], int start, int end) { 7 if (start < end) { 8 int stard = arr[start];//把数组中的第0个数字作为基准 9 int low = start; 10 int high = end;//记录排序下标 11 while (low < high) {//循环找出比标准数大的数字比标准数小的数 12 while (low < high && stard <= arr[high]) {//右边的数比标准数大 13 high--; 14 } 15 arr[low] = arr[high];//使右边的数字替换左边的数字 16 while (low < high && arr[low] <= stard) {//如果左边的数字比标准数小 17 low++; 18 } 19 arr[high] = arr[low]; 20 } 21 arr[low] = stard;//把标准数赋值给低所在的元素 22 quickSort(arr, start, high - 1);//处理所有小的数字 23 quickSort(arr, high + 1, end);//处理所有大的数字 24 25 } 26 } 27 28 public static void main(String[] args) { 29 int arr[] = {3, 4, 6, 7, 2, 7, 2, 8, 0}; 30 quickSort(arr, 0, arr.length - 1); 31 System.out.println(Arrays.toString(arr)); 32 33 } 34 }
方法二
1 public class QuickSort { 2 public static void quickSort(int[] arr,int low,int high){ 3 int i,j,temp,t; 4 if(low>high){ 5 return; 6 } 7 i=low; 8 j=high; 9 //temp就是基准位 10 temp = arr[low]; 11 12 while (i<j) { 13 //先看右边,依次往左递减 14 while (temp<=arr[j]&&i<j) { 15 j--; 16 } 17 //再看左边,依次往右递增 18 while (temp>=arr[i]&&i<j) { 19 i++; 20 } 21 //如果满足条件则交换 22 if (i<j) { 23 t = arr[j]; 24 arr[j] = arr[i]; 25 arr[i] = t; 26 } 27 28 } 29 //最后将基准为与i和j相等位置的数字交换 30 arr[low] = arr[i]; 31 arr[i] = temp; 32 //递归调用左半数组 33 quickSort(arr, low, j-1); 34 //递归调用右半数组 35 quickSort(arr, j+1, high); 36 } 37 38 39 public static void main(String[] args){ 40 int[] arr = {3 , 4 , 6 , 7 , 2 , 7 , 2 , 8 , 0}; 41 quickSort(arr, 0, arr.length-1); 42 for (int i = 0; i < arr.length; i++) { 43 System.out.println(arr[i]); 44 } 45 } 46 }
转载于:https://www.cnblogs.com/feimaoyuzhubaobao/p/10140904.html
排序算法--快速排序相关推荐
- 排序算法 | 快速排序,算法的图解、实现、复杂度和稳定性分析与优化
今天讲解一下快速排序算法的原理以及实现.复杂度和稳定性分析与优化 目录 1 快速排序的原理 2 快速排序代码实现 3 复杂度和稳定性分析.优化 4 习题练习 1 快速排序的原理 快速排序是所有内部排序 ...
- 排序算法 快速排序 python 0913
排序算法 快速排序 python 0913 快速排序 思路 定义快排方法 接收参数:原始列表,起始位置,终止位置 判断是否符合快排条件,当起始下标与终止下标相等时,代表只有一个元素,无法排序,退出 一 ...
- 排序算法 快速排序【详细步骤图解】
排序算法 快速排序[详细步骤图解] 快速排序 主要思想 图解 第一轮分割序列 第二轮分割序列 --- 左子序列 小结 第三轮分割序列 --- 右子序列 C++实现 总结 快速排序 给定一个序列:22 ...
- 【图解算法】排序算法——快速排序
简介 首先还是得简单的介绍一下快速排序这个算法. 快速排序(Quicksort),又称划分交换排序(partition-exchange sort),一种排序算法,最早由东尼·霍尔提出.在平均状况下, ...
- JavaScript的排序算法——快速排序
排序算法(Sorting algorithm)是计算机科学最古老.最基本的课题之一.要想成为合格的程序员,就必须理解和掌握各种排序算法. 快速排序(Quicksort)是对冒泡排序的一种改进. 快速排 ...
- 十大经典排序算法-快速排序算法详解
十大经典排序算法 十大经典排序算法-冒泡排序算法详解 十大经典排序算法-选择排序算法详解 十大经典排序算法-插入排序算法详解 十大经典排序算法-希尔排序算法详解 十大经典排序算法-快速排序算法详解 十 ...
- 排序算法---快速排序(java版)
快速排序 原理 快速排序(Quick Sort)算法,简称快排,利用的也是分治的思想,快排的思路是:如果要对 m->n 之间的数列进行排序,我们选择 m->n 之间的任意一个元素数据作为分 ...
- 实现快速排序的算法_排序算法-快速排序
快速排序是由东尼霍尔所发展的一种排序算法.在平均n个项目要Ο(nlogn) 次比较.在最坏状况下则需要 Ο(n2) 次比较,但这种状况并不常见.事实上,快速排序通常明显比其他 Ο(nlogn) 算法更 ...
- 排序算法 —— 快速排序
快速排序算法介绍 划分问题:把数组的各个元素重排后分成左右两个部分,使得左边任意元素都小于或等于右边任意元素. 递归求解:把左右两部分分别排序. 快速排序代码 #include <iostrea ...
最新文章
- python xpath语法-Python爬虫之XPath语法
- aws技术峰会2018_AWS re:Invent 2018的5大公告
- 希沃展台如何使用_展商该如何做好展台设计?
- c语言格式化 病毒源码,【病毒】震荡波病毒C语言源码
- 【Android学习笔记】【Android学习资源】GitHub上史上最全的Android开源项目分类汇总
- 在Ubuntu系统中安装字体(以安装华文行楷和方正舒体为例)
- 麟龙指标通达信指标公式源码_麟龙指标套三 麟龙特色指标 通达信主图+副图指标 贴图...
- R语言和Python交互
- Spring之FactoryBean的使用与源码解析
- Python股票量化学习(3)——简单的策略回测
- 论文笔记(2):Cartoon Avatar Generation with Configurable Attributes based on GAN
- Android 自动旋转屏幕总结
- 51单片机实验 7段数码管静态显示数字
- 设计模式中的撩妹神技--下篇
- 入门算法题——数学篇(一)
- Oracle查询表空间
- 跨平台.NET Core--微软开源方向
- JavaEE 面试题总结
- 转让测绘资质,转让天津测绘资质
- JAVA在线客服系统管理源码
热门文章
- Ajax设置自定义请求头的两种方法
- python入门之前面内容拾遗
- vue路由跳转 返回上一级 this.$router.go(-1) 和返回到指定页面this.$router.push('/home')...
- BZOJ3123: [Sdoi2013]森林
- python3 tkinter
- ubuntu终端彻底删除软件
- Source insight 支持汇编
- Appcan——Box
- 开发笔记- iOS监听某些事件的方法简单梳理
- Kenshin Cui's Blog