博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
排序_快速排序_另一种取划分点的方法
阅读量:4694 次
发布时间:2019-06-09

本文共 2216 字,大约阅读时间需要 7 分钟。

最基本的划分点由数组的最后一个值来确定,现在是将数组的最后一个值的前一个数值作为划分点,但是需要经过三项取一方法的变换,最后它位置上的值是三个中最大的。

public class ArrayIns {    private long [] a;    private int nElems;    public ArrayIns(int maxSize) {        a=new long[maxSize];        nElems=0;    }    public void insert(long value) {        a[nElems]=value;        nElems++;    }    public int size() {        return nElems;    }    public void display() {        for(int j=0;j
a[center]) swap(left, center); if(a[left]>right) swap(left, right); if(a[center]>a[right]) swap(center, right); swap(center, right-1); return a[right-1]; } private void manualSort(int left, int right) { int size=right-left+1; //判断当前需要划分的数组的大小 if(size<1) return; if(size==2) { if(a[left]>a[right]) { swap(left, right); return ; } }else { if(a[left]>a[right-1])swap(left, right-1); if(a[left]>a[right])swap(left, right); if(a[right-1]>a[right])swap(right-1, right); } } public int partitionIt(int left,int right,long pivot) { int leftPtr=left; int rightPtr=right-1; while(true) { //左边找大于特定值的 while( a[++leftPtr]
pivot); if(leftPtr>=rightPtr) break; else //交换指向的值 swap(leftPtr, rightPtr); } swap(leftPtr, right-1); return leftPtr; } public void swap(int dex1,int dex2) { long temp; temp=a[dex1]; a[dex1]=a[dex2]; a[dex2]=temp; }}
public class Test {    public static void main(String[] args) {        int maxSize=100;        ArrayIns arrayPar=new ArrayIns(maxSize);        arrayPar.insert(60);        arrayPar.insert(30);                arrayPar.insert(80);        arrayPar.insert(10);        arrayPar.insert(70);        arrayPar.insert(90);        arrayPar.insert(00);        arrayPar.insert(20);        arrayPar.insert(40);        arrayPar.display();        arrayPar.quickSort();        arrayPar.display();    }}

 

转载于:https://www.cnblogs.com/S-Mustard/p/8097472.html

你可能感兴趣的文章
21世纪经济网APP
查看>>
解决NetworkOnMainThreadException
查看>>
1039 到底买不买
查看>>
农银电商项目学习笔记(一)
查看>>
MockObject
查看>>
Chukwa
查看>>
(转)Maven仓库——私服介绍
查看>>
设计模式之工厂模式
查看>>
仿复制粘贴功能,长按弹出tips的实现
查看>>
Kubernetes-Host网络模式应用
查看>>
第三次作业
查看>>
使用HTML5构建iOS原生APP(2)
查看>>
sqlplus terminators - Semicolumn (;), slash (/) and a blank line
查看>>
省选知识清单/计划列表(咕?)
查看>>
远程桌面(3389)复制(拖动)文件
查看>>
转 lucene3搜索引擎,索引建立搜索排序分页高亮显示, IKAnalyzer分词
查看>>
bootstrap datetimepicker 位置错误
查看>>
9结构型模式之代理模式
查看>>
第二节 整型数据
查看>>
Python 序列
查看>>