(Java学习笔记11) 快速查询
来源:互联网 发布:aes加密mc矩阵 编辑:程序博客网 时间:2024/05/22 03:42
快速排序
一、快速排序的思想。
四、代码实现快速排序。
一、快速排序的思想。
* 快速排序通过将一个数组划分成两个子数组,然后通过递归调用自身为
每一个子数组进行快速排序来进行。
二、如何进行划分。* 设定关键字,将比关键字小的数据放在一起,比关键字大的放在另外一组。
三、如何自动设定关键字
* 设置数组最右端的数据为关键字四、代码实现快速排序。
public class QuickSort {/* * 划分数组,point为关键字,left、right为数组索引 * */public static int partition(long arr[],int left,int right,long point){int leftPtr=left - 1;int rightPtr=right;while(true){//循环,将比关键字小的留在左端,比关键字大 的留在右端while(leftPtr<rightPtr && arr[++leftPtr]<point);while(rightPtr>leftPtr && arr[--rightPtr]>point);if(leftPtr>=rightPtr){break;//return就是结束该方法,break结束该循环}else{long tmp=arr[leftPtr];arr[leftPtr]=arr[rightPtr];arr[rightPtr]=tmp;}} //将关键字和当前leftPtr所指的这一个进行交换long tmp=arr[leftPtr];arr[leftPtr]=arr[right];arr[right]=tmp;return leftPtr;}public static void displayArr(long[] arr){System.out.print("[");for(long num:arr){System.out.print(num+" ");}System.out.print("]");System.out.println();}public static void sort(long[] arr,int left,int right){if(right-left<=0){return;}else{//设置关键字long point=arr[right];//获得切入点,同时对数组进行划分int partition=partition(arr,left,right,point);System.out.println("partition="+partition);//对左边的子数组进行快速排序sort(arr,left,partition-1);//对右边的子数组进行快速排序sort(arr,partition+1,right);}}}
public class TestQuickSort {public static void main(String[] args){long[] arr=new long[10];for(int i=0;i<10;i++){arr[i]=(long)(Math.random()*99);}QuickSort.displayArr(arr);QuickSort.sort(arr, 0, arr.length-1);QuickSort.displayArr(arr);}}
0 0
- (Java学习笔记11) 快速查询
- 学习笔记之快速排序法 --java
- Java FX 学习笔记一: 快速入门
- Java学习笔记排序算法-----------快速排序
- JAVA学习笔记0008----递归查询目录
- JAVA学习笔记_真假分页查询
- 快速排序学习笔记
- 学习笔记--快速排序
- Python快速学习笔记
- 快速排序学习笔记
- python快速学习笔记
- C++快速学习笔记
- 【学习笔记】快速幂
- 学习笔记快速记录
- Ajax快速学习笔记
- [Swift]:快速学习笔记
- git 快速学习笔记
- Spring 快速学习笔记
- CSS 选择器
- xargs命令详解,xargs与管道的区别
- 虚拟机桥接模式下设置静态IP地址无法上网
- 我们离DevOps多远?
- wargame.kr 大部分writeup
- (Java学习笔记11) 快速查询
- DevOps使用
- java通过jni调用虚拟游戏控制器vjoy
- hdu 1754 线段树单点更新求最值
- leetcode
- poj 2531 Network Saboteur
- 基于threejs 的webvr
- python爬虫系列三:爬取糗百成人的妹子图片(scrapy框架+正则)
- 调用非jni标准的第三方so(AS2.2)