一、
/*
* 快速排序
*/
public void _quickSort(int[] list, int low, int high) {
if (low < high) {
int middle = getMiddle(list, low, high); //将数组进行一分为二
_quickSort(list, low, middle - 1); //对低位进行递归排序
_quickSort(list, middle + 1, high); //对高位进行递归排序
}
}
public int getMiddle(int[] list, int low, int high) {
int tmp = list[low]; //数组的第一个作为中轴
while (low < high) {
while (low < high && list[high] >= tmp) {
high--;
}
list[low] = list[high]; //比中轴小的记录移到低端
while (low < high && list[low] <= tmp) {
low++;
}
list[high] = list[low]; //比中轴大的记录移到高端
}
list[low] = tmp; //中轴记录到尾
return low; //返回中轴的位置
}
二、
/*
* 快速排序(改进版)
*/
private void quickSort(int[] arr, int start, int end) {
int base = arr[start];
int i = start;
int j = end + 1;
// 如果end <= start,则结束递归
if (start < end) {
while (true) {
// 当i指向的数字大于或等于基准数时,停止递增
while (i < end) {
if (base <= arr[++i]) //小于等于
break;
}
// 当j指向的数字小于基准数时,停止递减
while (start < j) {
if (arr[--j] < base)
break;
}
// 如果i<j,则将两个数字对换;否则跳出循环
if (i < j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
} else {
break;
}
}
// 将基准数与j指向的数字进行对换
arr[start] = arr[j];
arr[j] = base;
// 对基准数两侧的区域分别进行递归
quickSort(arr, start, j - 1);
quickSort(arr, j + 1, end);
}
}
三、
/*
* 冒泡排序(改进版)
*/
private void BubbleSort(int[] arr) {
boolean flag;
for (int i = 0; i < arr.length; i++) {
flag = false;
for (int j = 0; j < (arr.length - i - 1); j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = temp;
flag = true;
}
}
// 如果没有发生交换,说明排序正确,退出循环
if (!flag) {
break;
}
}
}
分享到:
相关推荐
常用三种排序:快速排序、冒泡排序、插入排序的java实现示例
java算法,快速排序、冒泡排序、选择排序 快速排序文章:http://blog.csdn.net/yanwenyuan0304/article/details/51822361 冒泡排序文章:http://blog.csdn.net/yanwenyuan0304/article/details/51819045
JAVA冒泡排序和快速排序算法,符合实验报告要求哦
JAVA排序大全 冒泡 快速 选择 归并排序
JAVA排序算法: 直接插入,希尔排序,选择排序,堆排序,冒泡排序,快速排序,归并排序,包括算法的详细介绍,以及对几种算法的详细测试
快速排序与冒泡排序,Java实现
用java语言实现冒泡排序、插入排序、堆排序、快速排序、归并排序、希尔排序、桶排序,并且对各种排序算法进行性能的比较。
JAVA实现选择,冒泡,归并,插入,快速排序。并随机生成不同规模的随机数来测试各种排序方法耗费的时间。
java快速排序 归并排序 冒泡排序 选择排序
冒泡排序、快速排序和二分法查找的分析 Java
排序算法java版,速度排行:冒泡排序、简单选择排序、直接插入排序、折半插入排序、希尔排序、堆排序、归并排序、快速排序.mht
图解详细分析,java冒泡排序、快速排序、二分查找
3种排序方法的对比(快速排序,归并排序,冒泡排序)
快速排序、归并排序、希尔排序、冒泡排序、选择排序、插入排序等8中排序方式原理分析java实现
用java实现了以下算法: 1、冒泡排序、冒泡排序的两种改进。 2、插入排序。 3、选择排序。 4、希尔排序。 5、归并排序。 6、快速排序。
插入排序 冒泡排序 堆排序 基数排序 选择排序 快速排序的源码 java实现
JAVA的三种排序方法,快束排序 选择排序 冒泡排序,完整源代码。
Java代码-排序-直接插入排序、希尔排序、直接选择排序、冒泡排序、堆排序、快速排序、归并排序中部分排序以及算法-贪心法,大家可以将源码下载下来进行学习,附带着注释和解释,有不理解的可以找博主一起探讨,共同...
Java语言实现冒泡排序和快速排序的交互动画,是我的课程设计,内附文档ppt以及源码,可以直接运行。利用javafx中的柱状图进行实现。
设计一个负责排序的程序包,实现多种排序算法,至少包括插入排序、冒泡排序和快速排序算法。 要求: 1.可以对任何简单类型和任意对象进行排序 2.可以支持升序、降序、字典排序等多种顺序要求 3.可以随意增加排序算法...