public class 直接排序 {
/**
* 直接排序法 仅排序1轮
* @param arr 数组
* @param ji 基准索引,填写几,就以谁为基准进行一次划分
*/
public static void qsort(int[] arr, int ji) {
int l=0;
int r=arr.length-1;
while(l<r){
while(l<r&&arr[r]>arr[ji]) r--;
if(l<r) {
int temp=arr[r];
arr[r]=arr[ji];
arr[ji]=temp;
ji=r;
}
while(l<r&&arr[l]<arr[ji]) l++;
if(l<r) {
int temp=arr[l];
arr[l]=arr[ji];
arr[ji]=temp;
ji=l;
}
printarr(arr);
}
} /**
* 直接排序法 多轮划分
* @param arr 数组
* @param lun 基准索引,填写0,则从0开始,以其为基准,进行划分
*/
public static void qsortAll(int[] arr, int lun) {
if((arr.length-1)==lun) return;
int ji=lun;
int l=0;
int r=arr.length-1;
while(l<r){
while(l<r&&arr[r]>arr[ji]) r--;
if(l<r) {
int temp=arr[r];
arr[r]=arr[ji];
arr[ji]=temp;
ji=r;
}
while(l<r&&arr[l]<arr[ji]) l++;
if(l<r) {
int temp=arr[l];
arr[l]=arr[ji];
arr[ji]=temp;
ji=l;
}
}
printarr(arr);
qsortAll(arr,++lun);
} /**
* 用来输出数组
* @param arr 要输出的数组
*/
public static void printarr(int[] arr){
for (int i:arr) {
System.out.print(i+"\t");
}
System.out.println();
} /**
* 主方法
* @param args
*/
public static void main(String[] args) {
int[] arr = new int[]{410,10,80,9,70,4};
// int[] arr = new int[]{46,79,56,38,40,84};
qsortAll(arr, 0);
for (int i:arr) {
System.out.print(i+"\t");
}
}
} // for(r=arr.length-1;r>0;r--){
// if(arr[r]<arr[ji]){
// int temp = arr[r];
// arr[r]=arr[ji];
// arr[ji]=temp;
// ji=r;
// printarr(arr);
// break;
// }
// }
// for(l=0;l<arr.length;l++){
// if(arr[l]>arr[ji]){
// int temp = arr[l];
// arr[l]=arr[ji];
// arr[ji]=temp;
// ji=l;
// printarr(arr);
// break;
// }
// }

【数据结构】【直接排序法】Java代码的更多相关文章

  1. 专题 查找与排序的Java代码实现(一)

    专题 查找与排序的Java代码实现(一) 查找(Searching) 线性查找(linear search) 属于无序查找算法,适合于存储结构为顺序存储或链接存储的线性表. 基本思想:从数据结构线形表 ...

  2. 排序算法Java代码实现(三)—— 插入排序 和 希尔排序

    因为希尔排序的核心思想是插入排序,所以本篇将两篇排序一起记录 本篇内容: 插入排序 希尔排序 (一)插入排序 算法思想: 把n个待排序的元素看成一个有序表和一个无序表,开始时有序表中只有一个元素,无序 ...

  3. 排序算法Java代码实现(一)—— 选择排序

    以下几篇随笔都是记录的我实现八大排序的代码,主要是贴出代码吧,讲解什么的都没有,主要是为了方便我自己复习,哈哈,如果看不明白,也不要说我坑哦! 本片分为两部分代码: 常用方法封装 排序算法里需要频繁使 ...

  4. 选择排序法-java详解案例

    /**  * 功能:选择排序法 * 思想:第一次从R[0]-R[N-1]中选取最小值,与R[0]交换,第二次从R[1]-R[N-1]中选取最小值,与R[1]交换, * 第三次从R[2]-R[N-1]中 ...

  5. 排序算法Java代码实现(四)—— 归并排序

    本篇内容: 归并排序 归并排序 算法思想: 将两个或两个以上的有序表合并成一个新的有序表, 即把待排序序列分成若干个子序列,每个子序列是有序的,然后在把有序子序列合并为整体有序序列. 此算法分为两步: ...

  6. 排序算法Java代码实现(六)—— 堆排序

    本片内容: 堆排序 堆排序 最大堆: 二叉堆是完全二叉树或者是近似完全二叉树, 当父结点的键值总是大于或等于任何一个子节点的键值时为最大堆.(父节点大于任何一个子节点) 算法思想: 把n个元素建立最大 ...

  7. 排序算法Java代码实现(五)—— 快速排序

    本篇内容: 快速排序 快速排序 算法思想: 通过一趟排序将要排序的数据分割成独立的两部分, 其中一部分的所有数据都比另外一部分的所有数据都要小, 然后再按此方法对这两部分数据分别进行快速排序, 整个排 ...

  8. Java - 选择性排序 PHP || Java 代码对比

    int [] array1 = {1,3,5,7,9,10,2,15,154,10,2,188,200};//定义一个数组,内容为混乱大小 int index = 0;//定义一个最大值或最小值的位置 ...

  9. 八大排序算法java代码

    1.冒泡排序 public static void main(String[] args) { int[] arr = {1,4,2,9,5,7,6}; System.out.println(&quo ...

  10. 排序算法Java代码实现(二)—— 冒泡排序

    本篇内容: 冒泡排序 冒泡排序 算法思想: 冒泡排序的原理是:从左到右,相邻元素进行比较. 每次比较一轮,就会找到序列中最大的一个或最小的一个.这个数就会从序列的最右边冒出来. 代码实现: /** * ...

随机推荐

  1. 【ZZ】Linux 安装 edge 浏览器

    For Debain/Ubuntu/Deepin etc.## Setupcurl https://packages.microsoft.com/keys/microsoft.asc | gpg -- ...

  2. Camera 冷启动阶段分解

    目录 一.Camx trace 调试开关设置 1.设置 camxoverridesettings trace开关 2. 重启后设置开启camx trace 开关 二.Camera 冷启动阶段分解分析 ...

  3. Android 12 关机重启流程

    1. 关机流程 Android上层触发关机的入口很多,但最终几乎都是调用ShutdownThread.shutdown来实现.如下是一些常见的调用关机的点: StatusBarManagerServi ...

  4. 关于set实现结构体自动去重原理的推论

    转自本人博客,原文链接 先说结论 在每个操作均为log复杂度的前提下,set无法在判断顺序和重复关键字不同时完成对结构体元素的去重. 首先我们先看这段结构体定义,目的是先按num相等进行去重,再按ke ...

  5. 数据库故障处理优质文章汇总(含Oracle、MySQL、MogDB等)

    数据库告警.紧急问题处理这些项目对于大多数朋友来讲应该不陌生了.从墨天轮社区整理的"最受DBA欢迎的技术文档合辑"系列中可以发现,大家对"故障诊断专题"的热情居 ...

  6. Maven 项目获取 git 分支、提交等信息

    git-commit-id-plugin 是一个 Maven 插件,用于在 Maven 项目的构建过程中自动获取 git 仓库的信息,如最后一次提交的 ID.分支名称.构建时间等,并将这些信息注入到项 ...

  7. 如何使用ConsulManager来优雅的管理主机监控与站点监控

    概述 ConsulManager是一个使用Flask+Vue开发的Consul WEB管理工具,比官方自带的WEB UI实现了更多的功能. 可以方便的对Consul Services进行增删改查,支持 ...

  8. ABC 363

    ABC 363 D - Palindromic Number 复盘一下几个细节: 最后得到的 \(n\) 代表的是答案在长度为 \(i\) 的回文数中排第几,所以最终答案要加上长度更短的 \(1 \s ...

  9. Matlab矩阵运算的硬件资源分析

    在用Matlab创建矩阵并计算矩阵乘法运算时,要注意计算机的可用内存大小(空间资源)和CPU性能(影响所用计算时间). 例如我们做以下测试:n为qubit的数目,那么一个矩阵Matrix_A=rand ...

  10. 狗的名字 ATCOER-ABC-171-C One Quadrillion and One Dalmatians

    狗的名字 ATCOER-ABC-171-C One Quadrillion and One Dalmatians 题目链接 我们可以将名字看成26进制的数,就可以转化为将一个10进制转26进制的数的问 ...