java 7个数排序_7 Java 快速排序
快速排序(Quicksort)是对冒泡排序的一种改进。
1、基本思想
通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以 递归进行,以此达到整个数据变成有序序列。
2、算法描述
快速排序使用分治策略来把一个序列( list )分为两个子序列(sub-lists)。步骤为:
①.从数列中挑出一个元素,称为基准(pivot)。
②.重新排序数列,所有比基准值小的元素摆放在基准前面,所有比基准值大的元素摆在基准后面(相同的数可以到任一边)。在这个分区结束之后,该基准就处于数列的中间位置。这个称为分区(partition)操作。
③. 递归地(recursively)把小于基准值元素的子数列和大于基准值元素的子数列排序。
递归到最底部时,数列的大小是0或1,也就是已经排序好了。这个算法一定会结束,因为在每次的迭代(iteration)中,它至少会把一个元素摆到它最后的位置去。
3、代码实现
public classQuicklySort {public static voidmain(String[] args) {
Long startTime=System.currentTimeMillis();//int[] array = new int[]{10, 1, 9, 2, 8, 3, 7, 4, 6, 5};
int[] array = new int[100000];for (int i = 0; i < 100000; i++) {
array[i]= (int) (Math.random() * 100000);
}
quicklySort(array,0, array.length - 1);
Long endTime=System.currentTimeMillis();
System.out.println(endTime-startTime);
}public static void quicklySort(int[] array, int low, inthigh) {if (null == array || array.length <= 0) {return;
}if (low >=high )
{return;
}int left =low;int right =high;int key =array[left];while (left
while (left < right && array[right] >=key) {
right--;
}while (left < right && array[left] <=key) {
left++;
}if (left
swap(array, left, right);
}
}
swap(array, low, left);//System.out.println(Arrays.toString(array));
quicklySort(array, low, left - 1);
quicklySort(array, left+ 1, high);
}private static void swap(int array[], int low, inthigh) {int tmp =array[low];
array[low]=array[high];
array[high]=tmp;
}
}
View Code
java 7个数排序_7 Java 快速排序相关推荐
- java中的排序方法,Java中的排序比较方式:自然排序和比较器排序
这里所说到的Java中的排序并不是指插入排序.希尔排序.归并排序等具体的排序算法.而是指执行这些排序算法时,比较两个对象"大小"的比较操作.我们很容易理解整型的 i>j 这样 ...
- java三个数排序从小到大,键盘输入三个数,实现从小到大排序,键盘输入从小到大...
键盘输入三个数,实现从小到大排序,键盘输入从小到大 // 导包 import java.util.Scanner; public class Sort { public static void mai ...
- java 7个数排序_JAVA基础(7)-数组的排序
数组的排序 冒泡排序的基本思想: 原理:比较两个相邻的元素,将值大的元素交换至右端. 思路:依次比较相邻的两个数,将小数放在前面,大数放在后面.即在第一趟:首先比较第1个和第2个数,将小数放前,大数放 ...
- Java回炉之排序算法
Java回炉之排序算法 Java回炉之排序算法 冒泡排序 插入排序 归并排序 快速排序 希尔排序 选择排序 堆排序 冒泡排序 一次次遍历数组,每次比较相邻两个. 两重循环,内层比较index和inde ...
- 排序算法python实现_合并排序算法– Java,C和Python实现
排序算法python实现 Merge sort is one of the most efficient sorting algorithms. It works on the principle o ...
- 排序算法java版,速度排行:冒泡排序、简单选择排序、直接插入排序、折半插入排序、希尔排序、堆排序、归并排序、快速排序...
先推荐一篇关于排序算法的文章:http://www.cppblog.com/guogangj/archive/2009/11/13/100876.html 本文思路部分来源于上篇文章,但测得的结果似乎 ...
- java 快速排序算法简单_排序算法java版,速度排行:冒泡排序、简单选择排序、直接插入排序、折半插入排序、希尔排序、堆排序、归并排序、快速排序......
先推荐一篇关于排序算法的文章:http://www.cppblog.com/guogangj/archive/2009/11/13/100876.html 本文思路部分来源于上篇文章,但测得的结果似乎 ...
- Java黑皮书课后题第6章:*6.5(对三个数排序)使用下面的方法头编写方法,按升序显示三个数
*6.5(对三个数排序)使用下面的方法头编写方法,按升序显示三个数 题目 题目概述 破题 代码:排序 运行结果 题目 题目概述 *6.5(对三个数排序)使用下面的方法头编写方法,按升序显示三个数: p ...
- java线程实现排序_【多线程实现快速排序】
快速排序算法实现文件QuickSort.java package quick.sort; import java.util.concurrent.Callable; import java.util. ...
最新文章
- C++ SSE运算例子
- 网络推广外包浅析当下网站优化处于健康状态有利于网络推广外包
- java实现单向链表
- java 学习知识汇总
- OC-数组排序-NSSortDescriptor使用
- vs2012常用快捷键总结
- 程序员过关斩将--少年派登录安全的奇幻遐想
- 你与数据科学家只差这26条python技巧
- linux查看pid 对应的程序_资深程序员总结:分析 Linux 进程的 6 个方法,我全都告诉你...
- 移动app测试的多样性_移动App测试一些崩溃原因及触发崩溃的场景
- springcloud 微服务鉴权_推荐 1w+ 星标的 SpringCloud 微服务项目,开发脚手架
- 前言-小迪web安全渗透培训视频笔记
- aforge java_C#使用Aforge调用摄像头拍照的方法
- 两波形相位差的计算值_连续模式PFC功率MOSFET电流有效值、平均值计算
- 斯特陵往事(转自清韵论坛 冯·迪特里施专栏)
- MFC 绘制 PNG 格式图片
- 浩哥的Linux学习笔记之cp命令
- 中国开发者将迎来黄金十年
- 启用计算机来宾账号,开启Windows 10来宾账户
- css选择器(id选择器)
热门文章
- EditPlus运行java时如何从键盘输入数据
- 基于Python-turtle库绘制哆啦A梦
- Ubuntu报错:E: The repository http://ppa.launchpad.net/fcitx-team does not have a Release file.
- Ubuntu18.04编译Android7.1.2源码(刷机Pixel)
- Android查看wakeLock调用情况
- Bluetooth---如何使用Android蓝牙开发
- Android APK系列4-------Android编译APK后的系统结构
- Vue项目中使用浏览器同步测试工具 browersync
- 宽带服务器盒信号灯红色闪烁,宽带出现光信号灯是红色是怎么回事
- 怎么看待传菜机器人_比拼食材原料、使用机器人传菜,餐饮业如何把握大消费时代的机遇...