快速排序:快速排序(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. 排序算法 | 快速排序,算法的图解、实现、复杂度和稳定性分析与优化

    今天讲解一下快速排序算法的原理以及实现.复杂度和稳定性分析与优化 目录 1 快速排序的原理 2 快速排序代码实现 3 复杂度和稳定性分析.优化 4 习题练习 1 快速排序的原理 快速排序是所有内部排序 ...

  2. 排序算法 快速排序 python 0913

    排序算法 快速排序 python 0913 快速排序 思路 定义快排方法 接收参数:原始列表,起始位置,终止位置 判断是否符合快排条件,当起始下标与终止下标相等时,代表只有一个元素,无法排序,退出 一 ...

  3. 排序算法 快速排序【详细步骤图解】

    排序算法 快速排序[详细步骤图解] 快速排序 主要思想 图解 第一轮分割序列 第二轮分割序列 --- 左子序列 小结 第三轮分割序列 --- 右子序列 C++实现 总结 快速排序 给定一个序列:22 ...

  4. 【图解算法】排序算法——快速排序

    简介 首先还是得简单的介绍一下快速排序这个算法. 快速排序(Quicksort),又称划分交换排序(partition-exchange sort),一种排序算法,最早由东尼·霍尔提出.在平均状况下, ...

  5. JavaScript的排序算法——快速排序

    排序算法(Sorting algorithm)是计算机科学最古老.最基本的课题之一.要想成为合格的程序员,就必须理解和掌握各种排序算法. 快速排序(Quicksort)是对冒泡排序的一种改进. 快速排 ...

  6. 十大经典排序算法-快速排序算法详解

    十大经典排序算法 十大经典排序算法-冒泡排序算法详解 十大经典排序算法-选择排序算法详解 十大经典排序算法-插入排序算法详解 十大经典排序算法-希尔排序算法详解 十大经典排序算法-快速排序算法详解 十 ...

  7. 排序算法---快速排序(java版)

    快速排序 原理 快速排序(Quick Sort)算法,简称快排,利用的也是分治的思想,快排的思路是:如果要对 m->n 之间的数列进行排序,我们选择 m->n 之间的任意一个元素数据作为分 ...

  8. 实现快速排序的算法_排序算法-快速排序

    快速排序是由东尼霍尔所发展的一种排序算法.在平均n个项目要Ο(nlogn) 次比较.在最坏状况下则需要 Ο(n2) 次比较,但这种状况并不常见.事实上,快速排序通常明显比其他 Ο(nlogn) 算法更 ...

  9. 排序算法 —— 快速排序

    快速排序算法介绍 划分问题:把数组的各个元素重排后分成左右两个部分,使得左边任意元素都小于或等于右边任意元素. 递归求解:把左右两部分分别排序. 快速排序代码 #include <iostrea ...

最新文章

  1. python xpath语法-Python爬虫之XPath语法
  2. aws技术峰会2018_AWS re:Invent 2018的5大公告
  3. 希沃展台如何使用_展商该如何做好展台设计?
  4. c语言格式化 病毒源码,【病毒】震荡波病毒C语言源码
  5. 【Android学习笔记】【Android学习资源】GitHub上史上最全的Android开源项目分类汇总
  6. 在Ubuntu系统中安装字体(以安装华文行楷和方正舒体为例)
  7. 麟龙指标通达信指标公式源码_麟龙指标套三 麟龙特色指标 通达信主图+副图指标 贴图...
  8. R语言和Python交互
  9. Spring之FactoryBean的使用与源码解析
  10. Python股票量化学习(3)——简单的策略回测
  11. 论文笔记(2):Cartoon Avatar Generation with Configurable Attributes based on GAN
  12. Android 自动旋转屏幕总结
  13. 51单片机实验 7段数码管静态显示数字
  14. 设计模式中的撩妹神技--下篇
  15. 入门算法题——数学篇(一)
  16. Oracle查询表空间
  17. 跨平台.NET Core--微软开源方向
  18. JavaEE 面试题总结
  19. 转让测绘资质,转让天津测绘资质
  20. JAVA在线客服系统管理源码

热门文章

  1. Ajax设置自定义请求头的两种方法
  2. python入门之前面内容拾遗
  3. vue路由跳转 返回上一级 this.$router.go(-1) 和返回到指定页面this.$router.push('/home')...
  4. BZOJ3123: [Sdoi2013]森林
  5. python3 tkinter
  6. ubuntu终端彻底删除软件
  7. Source insight 支持汇编
  8. Appcan——Box
  9. 开发笔记- iOS监听某些事件的方法简单梳理
  10. Kenshin Cui's Blog