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. Redisson 工作原理-源码分析

    时间不在于你拥有多少,而在于你怎样使用. 1:Redisson 是什么 个人理解:一种 可重入.持续阻塞.独占式的 分布式锁协调框架,可从 ReentrantLock 去看它. ①:可重入锁 拿到锁的 ...

  2. CSS动画效果(炫酷登录页面)

    1.整体效果 https://mmbiz.qpic.cn/sz_mmbiz_gif/EGZdlrTDJa6ibiceejK9loT70yREYASOhuSRaI6vQtQ42zN48oafaWDzdn ...

  3. 有Redis为什么还要本地缓存?谈谈你对本地缓存的理解?

    本地缓存是将数据存储在应用程序所在的本地内存中的缓存方式.既然,已经有了 Redis 可以实现分布式缓存了,为什么还需要本地缓存呢?接下来,我们一起来看. 为什么需要本地缓存? 尽管已经有 Redis ...

  4. .NET 全能高效的 CMS 内容管理系统

    前言 推荐一款强大的企业级工具 - SSCMS 内容管理系统. SSCMS 为企业级客户设计,完全开源免费,适用于商业用途且无需支付任何产品或授权费用. 本文将详细介绍 SSCMS 系统的功能.用户界 ...

  5. 循环中拼接String不同方法性能耗时对比

    对比背景 Java中最常用的拼接字符串方法就是 + 或 +=,使用上简单方便.但如果拼接数量比较大,例如在循环中拼接字符串,可能会有性能问题: 测试数据 循环100000次进行String拼接,对比+ ...

  6. 推荐7款程序员常用的API管理工具

    前言 现如今API接口的编写与调试已成为开发人员不可或缺的技能,工欲善其事,必先利其器,选择一款优秀的API管理工具显得尤为重要.本文大姚给大家推荐7款程序员常用的API管理工具,大家可以根据自身和团 ...

  7. Abp源码分析之虚拟文件系统Volo.Abp.VirtualFileSystem

    前言 Volo.Abp.VirtualFileSystem 是ABP(ASP.NET Boilerplate)框架中的一个重要组件,它提供了一种抽象文件系统的方式,使得应用程序可以轻松地访问和管理文件 ...

  8. 如果一个接口不使用token鉴权,应该怎么保持在登录状态下进行测试?

    1.token是接口中用于身份验证和授权的令牌,用户通过登录操作,服务器会返回一个token,这个token会在后续的请求中发送到服务器,用来证明用户的身份和权限. 2.如果接口没有token,可以使 ...

  9. MagicQuill,AI动态图像元素修改,AI绘图,需要40G的本地硬盘空间,12G显存可玩,Win11本地部署

    最近由 magic-quill 团队开源的 MagicQuill 项目十分引人瞩目,这个项目可以通过定制的 gradio 客户端针对不同的图像元素通过提示词进行修改,从而生成新的图像.值得一提的是,这 ...

  10. Python源码分析2 - 一个简单的Python程序的执行

    本文主要通过跟踪一个非常简单的Python程序的执行,简单讨论Python实现的基本框架和结构. 要执行Python程序如下,功能非常简单:从1加到10再打印出来 # test program sum ...