一直在WEB上头忙活,SSH啦,EXT啦,Flex啦,乱七八糟的前端、框架。
近日由于一个机会警醒了作为基础的算法已经差劲到一定地步了~~~
先补了补排序算法,贴点自己的代码上来,都是已经运行过的。看了看时间,排10个数字不到1ms,进入排序方法10次。。。快。。。真快。。。
快排基本思想http://jackey25.iteye.com/blog/456646这位哥们已经说的非常清楚了。。。
public class QuickSort {
/**
* @param args
*/
public static void main(String[] args) {
QuickSort qs = new QuickSort();
int[] toSort = new int[] { 2, -8, 99, 0, -1, 37, 43, 88, 2, 82 };
long ss = System.currentTimeMillis();
toSort = qs.quickSort(toSort, 0, 0, toSort.length - 1);
println(System.currentTimeMillis() - ss);
printAll(toSort);
}
//int cnt;
/**
* @param toSort
* @param standard 作为比较标准数值的位置
* @param left 左端起点位置
* @param right 右端起点位置
*/
private int[] quickSort(int[] toSort,int standard, int left, int right) {
//print(cnt++ +"| standard: "+standard+",left:"+left+",right:"+right+": ");
//记住起始结束的位置
int l = left;
int r = right;
//没有相遇,则一直移动
while(l < r){
while(r > left && l < r){
//从右侧找到第一个小于标准数值的,结束右端本次查找
if(toSort[r] < toSort[standard]){
swap(toSort,r,standard);
break;
}
r--;
}
while(l < right && l < r){
//从左侧找到第一个大于标准数值的,结束左端本次查找
if(toSort[l] > toSort[standard]){
swap(toSort,l,standard);
break;
}
l++;
}
}
//没有小到1个元素1组之前继续分组
if(l > left){
quickSort(toSort,left,left,l-1);
}
if(r < right){
quickSort(toSort,r+1,r+1,right);
}
return toSort;
}
/**
* 交换数值
*/
private int[] swap(int[] toSort, int i, int j) {
int temp = toSort[i];
toSort[i] = toSort[j];
toSort[j] = temp;
return toSort;
}
private static void printAll(int[] toSort) {
for (int i = 0; i < toSort.length; i++) {
System.out.print(toSort[i] + ",");
}
System.out.println();
}
}
分享到:
相关推荐
堆排序详细图解(通俗易懂)+排序算法----堆排序(超详细)堆排序详细图解(通俗易懂)+排序算法----堆排序(超详细)堆排序详细图解(通俗易懂)+排序算法----堆排序(超详细)堆排序详细图解(通俗易懂)+排序算法...
详解Java常用排序算法-选择排序 选择排序(Selection Sort)是一种简单的排序算法,它的基本思想是每次从待排序的元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的元素排完。 选择...
快速排序(Quick Sort)是一种分治思想的排序算法,它的基本思想是通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,然后再分别对这两部分记录继续进行排序,以达到...
本文将详细探讨标题所提及的几种排序算法:合并排序、插入排序、希尔排序、快速排序、冒泡排序以及桶排序,并结合Java语言的实现进行解析。 1. **合并排序(Merge Sort)**: 合并排序是一种基于分治策略的排序算法...
该资源提供了Java中实现堆排序的全面指南。文档中涵盖了堆排序的基本概念,包括如何对数组进行排序以及如何在Java中实现堆排序。此外,文档还包括一个逐步指南,介绍了如何在Java中实现堆排序,包括详细的代码示例和...
该资源提供了Java中实现插入排序的全面指南。文档中涵盖了插入排序的基本概念,包括如何对数组进行排序以及如何在Java中实现插入排序。此外,文档还包括一个逐步指南,介绍了如何在Java中实现插入排序,包括详细的...
Java 排序算法 - 计数排序 计数排序(Counting Sort)是一种非比较排序算法,它的基本思想是统计数组中每个元素出现的次数,然后根据元素出现的次数依次将元素放入有序的数组中。计数排序时间复杂度为 O(n+k),其中...
希尔排序(Shell Sort)是一种改进的插入排序算法,它的基本思想是将待排序的数组按照一定的间隔进行分组,对每组使用插入排序算法进行排序,然后缩小间隔,再对分组进行排序,直到间隔为1 为止。逐渐减小间隔大小的...
Java排序算法之冒泡排序详解 冒泡排序(Bubble Sort)是一种简单的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果它们的顺序错误就交换位置。这个过程持续对数列的末尾进行,直到整个数列都排序完成...
在上面的代码中,我们使用 Java 语言实现了堆排序算法。其中,Heap 类中包括两个函数:heapSort 和 heapify。heapSort 函数接受一个整数数组作为输入,并使用堆排序算法对该数组进行排序。heapify 函数用于对一个...
java实现国密算法gm-java-main.zip
Java代码-排序-直接插入排序、希尔排序、直接选择排序、冒泡排序、堆排序、快速排序、归并排序中部分排序以及算法-贪心法,大家可以将源码下载下来进行学习,附带着注释和解释,有不理解的可以找博主一起探讨,共同...
//表示待排数组的元素个数。 private long numLeft;//用于存储剩余排列序列个数的成员变量。 private long total;//用于存储排列序列总数的成员变量。 public Arrange(int n){ this.n=n; reset();//调用...
这个名为"Java各种排序算法代码.zip"的压缩包包含了一系列实现不同排序算法的Java源代码。排序算法是计算机科学中的基本概念,用于对一组数据进行排列。下面将详细讨论这些算法及其在Java中的实现。 1. 冒泡排序...
LZ4压缩算法java实现 LZ4压缩算法是lossless压缩算法,提供了高达500 MB/s每个核心的压缩速度,且可以根据多核CPU进行扩展。它具有极快的解压速度,速度可达多GB/s每个核心,通常达到多核系统中的RAM速度限制。速度...
《Java数据结构和算法-带书签目录扫描版》是一本深入探讨Java编程语言中数据结构和算法的书籍。此扫描版特别包含了完整的书签目录,使得读者在电子版阅读时能够快速定位到所需章节,提高了学习和查阅的效率。 在...
常用的排序算法--堆排序,通过创建堆的方法进行排序
java代码-使用java解决java排序之-快速排序的问题的源代码 ——学习参考资料:仅用于个人学习使用!
以下是对标题和描述中提到的Java各种排序算法的详细解释,以及它们的实现代码概述。 1)**插入排序(直接插入排序、希尔排序)** - **直接插入排序**:它是一种简单的排序算法,工作原理类似于打扑克牌。遍历数组...