本篇内容:

  • 快速排序

快速排序

算法思想:

通过一趟排序将要排序的数据分割成独立的两部分,

其中一部分的所有数据都比另外一部分的所有数据都要小,

然后再按此方法对这两部分数据分别进行快速排序,

整个排序过程可以递归进行,以此达到整个数据变成有序序列。

代码实现:(递归)

/**
*
*/
package com.cherish.SortingAlgorithm; /**
* @author acer
*
*/
public class Chapter_6_QuickSorting extends ArrayBase{ /**
*
*/
public Chapter_6_QuickSorting() {
// TODO 自动生成的构造函数存根
} /**
* @param args
*/
public static void main(String[] args) {
// TODO 自动生成的方法存根
int[] array = new int[] {3,4,7,9,2,5,1,8,6};
quickSorting(array,0,array.length-1);
printArray(array);
} /*
* 通过一趟排序将要排序的数据分割成独立的两部分,
* 其中一部分的所有数据都比另外一部分的所有数据都要小,
* 然后再按此方法对这两部分数据分别进行快速排序,
* 整个排序过程可以递归进行,以此达到整个数据变成有序序列。
* */
public static void quickSorting(int[] array,int low,int high)
{
if(low < high)
{
//获取基准点
int middle = getMiddle(array,low,high);
quickSorting(array,low,middle-1);
quickSorting(array,middle+1,high);
}
} //对每个分部数组进行排序,并给出下一轮的数组切分点
public static int getMiddle(int[] list,int low,int high)
{
//数组的第一个数为基准元素
int temp = list[low];
while(low<high)
{
while(low<high && list[high]>temp)
{
high--; //从后向前找比基准小的数
}
//把比基准小的数移到低端
list[low] = list[high];
while(low<high && list[low] < temp)
{
low++; //从前向后找比基准大的数
}
//把比基准大的数移到高端
list[high] = list[low];
}
list[low] = temp;
return low;
} }

实现结果:

最新文章

  1. Foreach能够循环的本质
  2. IOS中两个view的切换
  3. linux基础命令(二)用户管理和权限管理
  4. [图论]Floyd 算法小结
  5. 你猜&hellip;&hellip;你再猜
  6. c#NPOI导出
  7. 【HDOJ】5288 OO’s Sequence
  8. 关于box-sizing
  9. slf4j 和 log4j合用的(Maven)配置(转)
  10. WPF的消息机制
  11. 使用Redis的Java客户端Jedis
  12. MySQL安装之zip格式
  13. 漂亮的HTML表格 - ebirdfighter的日志 - 网易博客
  14. 【Java进阶】——初识数据库连接池
  15. css边框动画
  16. 背水一战 Windows 10 (111) - 通知(Tile): secondary tile 模板之图片, secondary tile 模板之分组
  17. Django2.0引入css、js、img文件
  18. K8s部署使用CFSSL创建证书
  19. Ajax+JSP登陆后带参数跳转
  20. blog项目知识点梳理

热门文章

  1. AI 的架构与核心
  2. leetcode - 括号字符串是否有效
  3. jQuery中$符号的作用
  4. 从html富文本中提取纯文本
  5. composer基本操作详解
  6. mysql数据库之管理表和索引
  7. Centos 7 下yum搭建lnmp环境(yum安装方式)
  8. React 受控组件和非受控组件
  9. JS高阶---进程与线程
  10. django学习-视图练习