我试图编写一个简单的算法来移动枢轴周围的元素,使得枢轴左侧的元素小于枢轴,并且枢轴右侧的元素大于它(快速排序中的相同步骤).我编写了可行的代码,但之后我将算法更改为以下内容,但它无效.

算法的想法很简单.

Have two pointers, one at the beginning of the array and one at the end of array. If the elements pointed by i are lesser than pivot, keep skipping it until we find a greater element; and keep decrementing j until we find an element greater than the smaller element. [It is a common algorithm]

现在的代码

private static void sortByPivot(int[] a)

{

Random r = new Random();

int index = r.nextInt(a.length);

int pivot = a[index];

System.out.println("pivot = " + pivot);

int i =0 , j = a.length -1;

while(true)

{

while(a[i] <= pivot) i++;

while( j >0 && a[j] >= pivot) j--;

if(i <= j)

{

break;

}

else{

swap(a,i,j);

}

}

swap(a,i,index); //swap the pivot and the i

}

交换例程:

private static void swap(int[] a, int i , int j)

{

int temp = a[i];

a[i] = a[j];

a[j] = temp;

}

当我使用以下数组运行它时

int[] a = {46,3,8,4,2,6,244,76}

当枢轴被选为4时

输出是

4 3 8 46 2 6 244 76

对于边缘的其他一些枢轴,我得到一个空指针异常.

实施中是否存在任何缺陷.逻辑对我来说似乎是正确的.我已经尝试了很长一段时间,但我无法解决它.

最佳答案 检查这个

implementation.它完全按照相同的原则工作.尝试比较,看看你哪里出错了.

请注意,如果i <= j并且也从循环中断,则应该交换a [i]和[j]的值.你是在else上做的,这是错误的,因为如果a [i]大于枢轴并且当你到达if时a [j]小于枢轴,那么如果i< = j.

java数据透视表算法_java – 在数据透视表上对数组进行分区相关推荐

  1. java导出为excel文件_java导出数据到excel文件

    有的时候,将一些有用的数据导出到excel是很有必要的.比如说,我现在在做一个学校的在线教学平台,有一个需求是:将学生成绩导出到excel文件中去. 那怎样实现用java导出数据到excel文件呢?? ...

  2. Java根据表格生成图_java绘制数据表格并导出为图片格式

    /*** @Description : 导出图片 *@param: * *@return: * 2020-04-23*/ public void actionExportReport(HttpServ ...

  3. java 线性表定义_Java数据结构的线性表是怎样的

    Java数据结构--线性表的顺序存储实现 一.描述 线性结构特点: (1)存在唯一的一个被称作"第一个"的数据元素 (2)存在唯一的一个被称作"最后一个"的数据 ...

  4. java如何给顺序表赋值_JAVA模拟新增顺序表及单链表

    最近在回顾大学学的数据结构,这里给大家用javwww.cppcns.coma模拟顺序表和单链表的新增 1顺序表新增 /** * 顺序www.cppcns.com表 * * @author cjd * ...

  5. java中字符串的算法_Java中的字符串搜索算法

    我正在使用大量数据进行字符串匹配. 编辑:我正在匹配一个大列表中的单词与一些本体文本文件.我从本体中获取每个文件,并搜索每个文件行的第三个字符串与列表中的任何单词之间的匹配. 我在监督这样一个事实上犯 ...

  6. 哈希表数据结构_Java数据结构哈希表如何避免冲突

    前言 一.哈希表是what? 这是百度上给出的回答: 简而言之,为什么要有这种数据结构呢? 因为我们想不经过任何比较,一次从表中得到想要搜索的元素.所以就构造出来了哈希表,通过某种函数(哈希函数)使元 ...

  7. 使用java如何访问报表服务器_Java访问远程http服务器上数据的简便方法

    Java开发项目中,有时会访问远程http服务器上的数据,数据可能是xml格式或者json格式等.这里我们通过例子来看一下两种实现方式的对比. 本例子中有一个servlet,对外提供json格式的雇员 ...

  8. java从入门到精通_Java大数据:数据库开发从入门到精通

    在Java大数据开发任务当中,数据存储是非常关键的一环,涉及到分布式文件系统.分布式数据库,数据库是后端系统当中支持数据存储的重要组件.今天我们就来聊聊Java大数据,数据库开发从入门到精通,应该如何 ...

  9. java 导出word 带格式_java 导出数据为word文档(保持模板格式)

    导出数据到具体的word文档里面,word有一定的格式,需要保持不变 这里使用freemarker来实现: ①:设计好word文档格式,需要用数据填充的地方用便于识别的长字符串替换  如  aaaaa ...

最新文章

  1. 如何用一句话得罪 95% 的中国人?昨天这家公司做到了...
  2. CODE FESTIVAL 2017 qual B
  3. php提示密码错误的代码_php 实现密码错误三次锁定账号10分钟
  4. JQuery的插入操作滚动条显示返回顶部
  5. 在阿里云上进行Docker应用的自动弹性伸缩
  6. Mysql的select in会自动过滤重复的数据
  7. 黑马程序员---交通灯管理系统
  8. php eval 安全性,php – 使用eval解析表单输入的方程式的最安全的方法
  9. PostgreSQL update tbl1 from tbl2 一对多的注意事项(到底匹配哪条)
  10. 在布局空间标注的尺寸量不对_CAD解决布局标注尺寸不对问题 及快捷键混乱问题...
  11. sqlserver 分组合并列_[雅思经验]?两个月备考,一战雅思7.5分经验分享!!!
  12. mes系统服务器连接失败,mes系统如何连接其他系统设备?
  13. 适配各种Windows分辨率,为DPI添加感知,当在高DPI时,禁用WINFORM缩放等。
  14. 减法公式运算法则_减法的运算法则
  15. ●UVA 11021 tunnello
  16. Android 传感器分类
  17. springboot框架下的实时消息推送
  18. Android加载PDF文档
  19. 学习Android:第一个app《hello word》
  20. 【机器学习基石】机器学习的种类(三)

热门文章

  1. [svn]svn conflict 冲突解决
  2. 【程序设计】浅拷贝与深拷贝
  3. Python编程实现数字图像的网络爬虫
  4. 天龙八部架设IP配置文件
  5. Gitlab CI/CD中的yml遇到的错误分析含解决方法(全)
  6. Microduino-W5500
  7. 交通灯系统51单片机设计(附Proteus仿真、C程序、原理图及PCB、论文等全套资料)
  8. IBL 漫反射辐照度
  9. YOLO-V4 论文学习+唐宇迪博士课程学习笔记
  10. 如何阻止事件冒泡与默认事件?